Create some Scala Magic in response to the new OptionalBinder.

This fixes #22.

In particular, I added all of the necessary scala magic to be able to ask for Option[T], Option[Provider[T]] and Option[javax.inject.Provider[T]] instead of the Guava Optional equivalents. This is solved similarly to how ScalaMultibinder is implemented. The readme is updated as well.

This pull request only shares a single commit from the other commit, specifically 2145abf (adding new injector extension methods).