Automatically load frameworks.

- Extend ObjectiveCFrameworkAttribute to accept a list of required frameworks
- Update all Monobjc assemblies to specify their required frameworks.
- Update ObjectiveCRuntime.ScanAssembly to load the required frameworks.

These removes the need to explicitly call ObjectiveCRuntime.LoadFramework.
Make auto loading frameworks configurable

Assemblies can be configured with their framework dependencies which the runtime can process automatically when the assembly is loaded. This is the default behavior since most applications will need to load the frameworks for referenced assemblies and the runtime has the information to do it. In some embedded environments assemblies may be loaded into the AppDomain which aren't actually referenced, and in such cases it can be useful to explicitly load required frameworks manually.
Implement Game Kit handlers and update csproj

- Updates block handlers with Action-based set methods.
- Updates the csproj to use the newly generated delegates from the latest tools fix
Remove NSPinnedString method.
Optimize ToString method by skipping the UTF-8 conversion and by an internal call.
Add Unicode conversion tests.
Update tools.
Merge branch 'feature/auto-load-framework' of https://github.com/spicypixel/monobjc into spicypixel-feature/auto-load-framework
Use explicit type.
There is no need for Linq.
Fix typo and make const.
Merge branch 'optimize_NSString' of https://github.com/letiemble/monobjc into letiemble-optimize_NSString