Split method validation into separate classes.

The process of validating method calls, which currently includes checking for
the existence of a method and the argument amount, has been extracted into two
separate classes.

Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>