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
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
Merge pull request #2254 from primalmotion/objj-typedef-and-ivar-checks

Objj typedef and ivar checks