Various changes.

Changes include implementing TM learning, various documentation changes,
and adding methods to allows the addition of pokemon to a trainer.