Add new NSErrorException type to be used by the async code to signal failure.
Move all cattr probing done when handling properties and methods to a separate type.
Extract MemberInformation::GetVisibility out of duplicate code.
Move is_unsafe to MemberInformation.
Extract method modifier generation to MemberInformation::GetModifiers.

This change carries a bit more mess that it needs to due to category_extension_type
and virtual_method not been computed there.
remove spray threadCheck.
Merge more of the cattr information. Now information on virtual method, selector and if it's a wrapper or not.
Pass one parameter instead of 3 to GenerateMethodBody.
Add basic support for an async attribute.
Async methods should be decorated with some of the attributes their sync version have.
Don't enable async on mac.