Wire implicit dependencies (issue #17)

If service takes an implicit argument in its constructor, then wire[T] will also try to infer them using c.inferImplicitValue.
In case when both, explicit and implicit values are found, then compiler error will be raised.

See test cases for more examples.

Implements feature request from issue#17