Implement a basic hooking system for the API

Currently only 1 hook: player login
Also begin to implement richer API types: entity, mob, player
Implement the gem.Location API type
Added comments to mark what needs to be added to the API
Create startup and shutdown hooks

Hook registration is now done in core.register_hooks, which is the first and only function
the script engine directly calls at startup.
Reorder hook constants
Add username, rights, and tab interfaces to player API