Add test to check for objective-c++ compilation

There are some problems with two headers in clang c++ mode so we need a
simple test that compiles as objective-c++
Define ext_methodInjectionBehavior enum using NS_OPTIONS

There is a type mismatch at ext_methodInjectionOverwriteBehaviorMask
static variable initialization in clang c++ mode between simple enum
and int. By declaring that enum using NS_OPTIONS we can specify type
for enum so we doesn't need any casts.
Remove restrict keyword from ext_synthesizeBlockProperty signature