Skill list management

- Writing a (hopefully) simpler way to manage the skill list
- Better data structures (still needs some heavy clean up though)
- A few other improvements, fixes and changes