CB-5782 Add a derived exception class for better error reporting in CLI

The on('uncaughtException') handler was removed recently in cordova-cli because
it was hiding the stack traces of some legit exceptions, but this results in
scary traces for simple errors like running outside a corodva project.

This change reintroduces the on('uncaughtException') handler and adds a special
CordovaError class for such simple errors. For exceptions of CordovaError class
only the message will be printed, for all other errors - the full stack trace.

Another pass over the code will be needed to find and convert the Errors to
CordovaErrors where appropriate. Will be done in a separate change.
CB-5590 Have config.xml version map to CFBundleShortVersionString instead of CFBundleVersion
CB-5782 Use CordovaError wherever relevant.

Other than the trivial changes that look like
new Error(...) -> new CordovaError(...)
there is also a change in util.js to throw the error instead of returning it
and associated changes in specs.
CB-5493 lazy_load now downloads to a temp dir and then moves.

If "cordova create" is interrupted with Ctrl-C while downloading the cordova
library for www, a bad version is stored in ~/.cordova/lib/. That bad version
is then used for future runs of "cordova create" which results in projects with
www dir containing no files except a subfolder named like
cordova-app-hello-world-3.2.0-ee9a86g3
CB-3612 Don't pass --device to "run" command by default. Update help text
Fix serve command when config.xml is in the root (not within www/)
Fix tests (sorry)
CB-5907 Make `cordova update` get version from platform's version script
Fix isWindows check in util.js to support win64
CB-5913 Fail more gracefully on Windows when symlinks fail.
platform: Show platforms that are out of date

includes test for platform check