Support for Guava Optional

Resolution for #66

Please don't accept or reject this PR as it is not done (unless you are going to append the fix for the below after accepting!).

It is 99% complete (with test) except that, inside the processor the `withOptionals` directive is exposed as some horrible compiler symbol not the original enum. I remap by `toString` back into the `OptionalSupport` enum but it feels very wrong like that.

Please advise on Directives.java:35