New: Added Objective-J protocol support

The Objective-J parser and compiler now handles protocol syntax. The Objective-J runtime has new functions to handle protocols. The method 'conformsToProtocol:' has been added to CPObject as an instance and a class method.
Fixed: Allow protocols in interface declaration
Fixed: Removed double declared ivar
Fixed: Removed all warnings of conflicting return and parameter types caused by the new compiler
Fixed: Added 'id' as a token and enforce that protocol can only follow 'id' as a Objective-J type
Fixed: Allow some tokens to be identifiers
Fixed: Renamed local variable that used reserved variable name ('arguments')
Fixed: Make default return type to 'void' for '@action' or 'IBAction' marked method.
Fixed: Allow type on return or parameter type to be a class if superclass or protocol declared it as 'id'
Merge branch 'master' of https://github.com/cappuccino/cappuccino into protocol
Fixed: Handle protocol declaration with no method declarations
Fixed: Handle '@required' before any method declarations
Fixed: Moved incorrect positioned parenthesis to handle '@required' token
Fixed: Updated test case to include '@required' and '@optional' keywords
Fixed: Check if global function exists in correct way
Fixed: Protocol definition in compiler was not created correct from protocol definition in the runtime
Fixed: Protocol methods is now registered in the correct place
Fixed: Copy method descriptions to an array instead of JSObject
New: Added the basic protocols CPObject and CPCoding
Fixed: Pass correct node to error message when finding duplicated protocol