NEW: @typedef and ivar type warning

Previously, ObjJ was ignoring unknow ivar type. This patch adds some check to ensure the type is either a known class, the current class
itself, a global, a basic JS type or a declared custom type.

In order to declare custom types, this patch introduces the @typedef keyword.

For instance, this will throw a warning:

```objj
@import <Foundation/Foundation.j>

@implementation MyClass: CPObject
{
    NUSuppaType mode;
}
@end
```

This will not:

```objj
@import <Foundation/Foundation.j>

@typedef NUSuppaType

@implementation NUMyClass: CPObject
{
     NUSuppaType mode;
}
@end
```

Declared types are shared accross all application, one type can only be declared once.
FIXED: New warnings reveleaded by ivar type checking

This patch fixes all new warnings
FIXED: ivars warning fixes
Fixed compilation warning in nib2cib
CPWebScriptObject is a class, not a typedef
FIXED: prevent to declare a type that is already declared as a class and vice-versa
Correctly set the type of datasource in CPComboBox
Add some manual test cases for objj output
Update README
Add check to ensure a @class declaration is not already defined as a type
Update test cases
Fix a missing @class declaration
New: added method addObserverForName:object::usingBlock: in CPNotificationCenter

Previously, the method addObserverForName:object::usingBlock: didn't exist in Cappuccino.
Now it does.

To observe, you need to use the method - (id <CPObject>)addObserverForName:(CPString)aNotificationName object:(id)anObject usingBlock:(Function)block

To unregister observations, you pass the object returned by this method to removeObserver:. You must invoke removeObserver: or removeObserver:name:object:.

Test /Tests/Foundation/CPNotificationCenterTest.j

Fixed #2259
Fixed: added queue to the method addObserverForName:(CPString)aNotificationName object:(id)anObject queue:(id)queue usingBlock:(Function)block
Merge pull request #2261 from Dogild/CPNotificationBlock

New: added method addObserverForName:object::usingBlock: in CPNotificationCenter
Typos
Merge branch 'master' into objj-typedef-and-ivar-checks

+ fixed new warnings from master

Conflicts:
	Foundation/CPNotificationCenter.j
Fixed: Memory leak in CPClipView

Previously, the CPClipView registered the documentView to the notificationCenter as an observer to be notified when the frame/bounds of the  documentView change.

Now, we don't use the notificationCenter anymore. The class CPView send a message to its superview (when it's a clipView) when the frame or bounds change. This fix the memory leak of the CPClipView

Fixed #2264
Fix broken tests due to new objj type checks
Merge pull request #2254 from primalmotion/objj-typedef-and-ivar-checks

Objj typedef and ivar checks