Fix parsing of the type-encodings for blocks and function pointers.

The type-encoding "@?" means "block", and "^?" means "function pointer".
Unfortunately there is no way to determine the original parameter types
or return type of the function or block, so I arbitrarily pick
(void(*)()) and (void(^)()) as the type displayed by class-dump.
Fix an assert-fail if a block or function pointer appears inside a struct.

My revision 3a1c177e wasn't quite complete enough; we also need to include
cases for the two new types in [CDType typeString], or we'll get assertion
failures on code like

    struct FaceCoreAPI {
        void (^field1)();
    };
    @interface A -(struct FaceCoreAPI*)api; @end

This is now fixed.
Use typedef for unknown function pointers and blocks
Handle extended block signatures
Group function pointers and blocks under the same "pragma mark"
Add unit tests for block signature
Fix block signatures with two or more arguments
Add unit test for block signature with BOOL arguments
Special case block signature with BOOL arguments
Merge pull request #32 from 0xced/blocks-function-pointers

Support for blocks and function pointers (better version of #28)