Add command interfaces

Adding some interfaces for commands.

I am open to suggestions on this pull request.
Hmm wouldn't it be better to use CommandSender as name? Like in NMS ?