Fix tilde constraints without a stability suffix to work like wildcard constraints.

With this fix, a tilde constraint such as ~3.1 won't match unstable versions of 3.1,
but a wildcard constraint such as 3.1.* would.  This seems like a confusing
inconsistency, and so I have corrected it.
Refactor wildcard matching to use manipulateVersionString
Formatting updates for PSR-2 compliance.
Fixed lower bound of tilde and wildcard matches.

The lower bound of ~1.2 and 1.2.* style version requirements now uses >= 1.2.0.0-dev instead of
> 1.1.9999999.9999999.  This is more straightforward to read, and behaves equivalently.
Fixed upper bound of wildcard matches.

Follow-on from 95b4348afa2ee335d9dc1f9e2fecf579b49f7ddf
Detect version based on tag if HEAD points to a tag.
Fixed the existing test and added a new one for git tag version guessing.
Use --tags to get non-annotated tags as well.
Test InitCommand::parseAuthorString()
Extract email validation into a method
Fix namespace
Test parseAuthorString() actual result
Merge remote-tracking branch 'frosas/test-author-string'
CS fixes
Clean up rogue git env vars in case this is running in a git hook, refs #1832
Report ICU failures as the intl extension being missing, refs #1939
Abort if a script fails to execute, and exit with the exit code of the process, fixes #1943
updated script events
added new POST_ROOT_PACKGE_INSTALL and POST_CREATE_PROjECT event, triggered only in create-project
changed create-package parameter 'package' to be optional, command now looks in working directory for composer project if no param is given
Added realpath to VcsDriver constructor

See https://github.com/composer/composer/pull/1828
Add --lock argument to the update command to make this hack explicit and official