Hide non-public API in CPTokenField.

Also improve documentation.
Support `tokenField:representedObjectForEditingString:` delegate method.

This improves support for represented objects and is used both when an autocompletion suggestion is used or when the name of a token is typed in by hand.

The behaviour of taking an array of strings from `completionsForSubstring` and then asking for a represented object once a choice has been accepted matches the behaviour of Cocoa.
Hide another non-public API in CPTokenField.
Refactor CPTokenField autocomplete.

The new code is simpler (single responsibility principle) and makes it easier to improve on autocomplete.
Improve CPTokenField autocomplete scrolling.
Move autocomplete into reusable class.
Remove token field reference.
Ensure autocomplete menu is on top.

The menu should appear above other normal windows and controls like a regular CPMenu. To do this, put the pop up in its own window with the `CPPopUpMenuWindowLevel` window level.
Place token autocomplete underneath what's being completed.

This matches Cocoa.
Autosize token field autocomplete menu.

The new menu is much more efficient for the user:

* Less tall items makes it much easier to select among many completions.
* Exactly wide enough for widest item.
* Tall enough to show all items (instead of just 3 as before).
* Uses a maximum width and height defined by the screen edges and some Cocoa-like constants.
Fixed: make sure autocomplete menu fits within browser.
Fix token field `keyDown:` handling.

`CPTokenField` had custom key down handling making it function poorly with Cappuccino's event handling and subclasses.
Improve token field subclassing support.

Token field now triggers autocompletion from textDidChange: which better meets the expectations of Cappuccino programmers, and is closer to how Cocoa does it.

Eliminated custom non-Cappuccino key press handler.
Token field 'keyUp:' support.
Key bindings support for token field.

Also improve compatibility with `CPTextField` superclass and subclassing support by properly using `interpretKeyEvents:` like `CPTextField`.
Allow token field subclasses to override defaultCompletionDelay.

Also fixed incorrect return type.
Remove nonstandard `CPCopyRange`.
Inlineable range functions.
Minor token field optimisation.
Hide private token field API. Fix return type.