Add command interfaces

Adding some interfaces for commands.

I am open to suggestions on this pull request.
It represents the source of the command. (e.g. Player or Console)