Overhauled move class

* Separated get_*_id functions, main functions return associated strings
* Removed move_mainimpl class
Overhauled item class for API consistency
Refactored trainer class for API consistency

* Added default constructors for impl classes for copying
Added new internal file, copy_sptrs.cpp, for copying pkmn::shared_ptrs

* Vastly reduces duplicate code in team_pokemon_impl and trainer_impl