Added Command mixin system for defining commands

This mixin system allows for a base set of commands (fully customizable). This base set can be extended with other commands spcified on a per
area basis. For example, an area can have a jump command that is not available in the base commands.

Area commands can also override base commands. If something special needs to happen when the user moves north, a north command
can be defined for the area, and it will be used in place of the default north command.