Handle :opt, :key, :keyreq arguments; ignore rest

  * :keyreq behaves just like :key

  * :opt and :key get auto injected if the injector knows how - this
    means when your initializer supplies a default argument, ruse will
    override the default when it knows how, otherwise it will let ruby
    use the default.

  * There are other types of arguments, :rest (*args), :keyrest
    (**params), and :block (&block). ObjectFactory ignores these types
    of arguments, which means the object *will* get built by the
    injector.

  * Introduce an Initializer object that can sift through each of the
    initializer method arguments, knowing how to resolve dependencies
    for each one.

  * Since required keyword arguments don't exist in ruby 2.0, we fall
    back gracefully.