Added CommandInvocationContext, rename ArgumentAlias to Argument
This allows us to pass aliases and the Command instance to client
command methods should they wish to receive them
Background compatibility is kept.
Commands, such as the newly refactored help command, which need
information such as the alias can now receive them through a
CommandInvocationContext<T>, which should be compatible with a <T> value
of Player and CommandSender. However, runtime types are erased with
generics, so my special handling should not be needed.