reverseSetValuesFor: handle multiple selection
formatting+nil equality
Fixed: unable to chain sheet in a window

Previously when chaining sheet on the same window, Cappuccino crashed.
Now chaining a sheet in the delegate method of the method endSheet: will open the next sheet.

Now when opening a sheet, we check if another sheet is currently closing. If yes, we wait till we get the notification of the closing of the previous sheet. And then we open the next sheet.

Fixed #2159

Test app in Tests/Manual/AttachedSheet2/SheetWindowController.j
Typo: becauwe instead of because
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: Environment configuration in Jakefile templates

Previously the Jakefile template for the capp utility would emit a template where the "configuration" build environment parameter could have multiple values. At the head of the file, the configuration parameter could be an environment variable composed of ENV['CONFIG'], ENV['CONFIGURATION'] or ENV['c']. It would default to "Debug".

However, other locations in this file did not use the detected configuration, and only looked at ENV['CONFIGURATION'] for the environment variable.

This commit fixes this by using the detected configuration environment variable as the build environment.
FIXED: ivars warning fixes
Fixed compilation warning in nib2cib
NEW: Support for multiline mode in CPTextField

This patch adds support for CPTextField with multiline content. It uses
a DOM textarea when needed, instead of DOM input.

It also disable the spellchecking, fixes a bug where the input element was not
correctly resized when the frame changed, and refactor some code
Add support for usesMultilineMode and fix wraps and scrolls in nib2cib
Add manual test
Add CPAltEnterTextAreaFeature checking. FF doesn't add a cariage return on textarea when doing alt+enter
Fixed: Enable CPTextField to have a specific height

When setting controlSize, CPTextfield height was forced to min-size height.
Now we check that the frame size is between the min and the max size. It allows to constrain
a CPControl to have a fixed height by specifying a min-size equivalent to the maxsize.
In CPTextField case, we only have a min-size which enable us to have a specific size.

Changes has been made in Aristo2 only.
Merge pull request #2257 from primalmotion/textfield-multiline-support

NEW: Support for multiline mode in CPTextField
Merge pull request #2255 from ahankinson/fix-default-jakefile

Fixed: Environment configuration in Jakefile templates
Merge pull request #2258 from t00f/fix_controlSize_height

Fixed: Enable CPTextField to have a specific height
Merge pull request #2238 from Dogild/ChainSheetWindow

Fixed: unable to chain sheet in a window
Merge pull request #2164 from daboe01/fixed--CPTextField-&-Bindings--data-updates-even-though-no-editing-has-taken-place

Fixed: textField bindings delete data in case of multiple selection after tabbing out with no editing
Fixed: CPMenu crash when opening a menu with items and then opening the menu without items

Previously, when opening a menu with items and then opening another menu without items, Cappuccino simply crashed. Now it works !