buildargs: initial implementation

Add spec (using example from Moose::Manual::Construction) and
initial buildargs support (using __buildargs__ as the method name).

Another (desired) effect of this change is that passing positional
arguments to an Elk class without a __buildargs__ method will raise
TypeError.
cache init args on class object

Move the init_args set computation into __new__ and cache the result
in the class dict rather than computing it every time an object is
constructed.
build: initial implementation

Add spec for the __build__ method feature and add a default
__build__ method to elk.Elk which raises TypeError if any
unrecognised arguments are passed (i.e. the existing behaviour is
maintained).  The argument received by __build__ are the arguments
with which the object is constructed, i.e., the result of
__buildargs__.