Initial implementation of java 8 features

Includes lambdas, defender methods and method handles

Change-Id: Idb194f51e5a5e34c9a52449214c79925b679eb74
Fix lambdas to appear as the expected type

Previous implementation created lambdas as the type of the
single abstract method being implemented, rather than expected
type in method signature.  To fix this, we correctly type the
anonymous type (and return the correct class from .getClass())

Change-Id: I6012225abb8c79407124b3571be07e1e8c5bd7de
Add java8 emulation for common functional interfaces

Change-Id: Ieb64f37b02ee062fa8493d20ff47e163ec94346b