Transition Matrix Monte Carlo Methods for Complex Systems