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
Minor formatting.
Merge branch 'master' of github.com:cappuccino/cappuccino
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
Fix broken tests due to new objj type checks