First prototype of lexer logic for parsing version constraints
Start to use parser on VersionParser

- Simplify the Lexer and create token for branch
- Start to use tokens on VersionParser
Backport the composer code and make groups test pass
Add a bit more complexe test using aggregate statements on version string
Fix remove all end and firsts parenthesis on string version
Create test for Exception handled
Fix regex to match expressions correctly

- Parse versions in the right way
Return default value out of switch statement
Create tests for lexer
Add new method `createVersion` using lexer
Add simple and complicated test to VersionParser
Make tests pass using Lexer
Remove the debug echo line
Simplify nested level a bit
- Remove unnecessary things on parseConstraints method, make it more clear and add a single if to `parseGroups()` of versions.
- Rename 'createVersion' to 'parseGroups'
- Throw UnexpectedValueException if parenthesis is closed incorrectly.
- Verify a '$normalGroup' before check it on $group (VersionParser::parseGroups())
- Modify tests to run with lexer/parseGroups
Simplified `Composer\Package\LinkConstraint\MultiConstraint#__toString()`, using `(` and `)` for delimiters
Adding stricter parsing output format test to ensure bijective constraint syntax for composite constraints
Adding test cases to verify bijective nature of parsing and casting to string of multi constraints
Merge pull request #1 from Ocramius/feature/lexer-parsing-multi-constraint-syntax-fixes

Feature/lexer parsing multi constraint syntax fixes
Fix regular expression on lexer to get version correctly