Fix parsing DATE strings and the test for it

JS apparently parses date strings as if they were in GMT if they do not
include a time component, but parses them as if they were in local time
otherwise. We always want to treat dates as if they were local time, so
this patch fixes the problem, and also adjusts the test to not run into
it itself.
Add comment about resume() implementation
Whitespace
Stop catching parser errors

Having any exception on the parser stack trapped requires any
callback/event going back to the user to be wrapped in process.nextTick
in order for it to not be trapped by try...catch block which is very
annoying.

This also makes it hard to guarantee row streaming pause() / resume() to
work properly as invoking the 'result' events in a nextTick means that
other 'result' events may fire, even if the first one calls pause()
(because the other ones are already scheduled as nextTicks).

Even so it would be nice to allow the user to handle potentially unknown
problems in the parser gracefully, it is ultimatively not worth the
tradeoffs that are involved. Going forward any unknown parser defects
will cause hard exceptions which may only be trapped by using domains or
'uncaughtException'.

This patch is also done in preparation for implementing exception
safety, so that it becomes possible to use a shared mysql connection
across multiple domains.
Implement exception safety

This patch adds try...finally blocks for all callbacks / events fired by
this library to make sure that cleanup blocks always run.

Honestly I think this is pretty terrible, but unfortunately almost
nobody understands the concept of exception safety properly at this
point, and many people will run into issues when using the new Domain
feature in 0.8 while sharing a single connection between multiple
domains.

This feature also comes with a ~10% performance tax, but that can be
potentially avoided by restructuring the parser a bit later on.

Closes #234
Merge branch 'exception-safety'
Readme whitespace
Added com_change_user functionality
Added test for com_change_user
Whitespace changes

* Trailing whitespace
* Missing whitespace between expressions
* etc.
ChangeUserPacket -> ComChangeUserPacket

To be consistent with ComQueryPacket
Remove dead code
Improve ChangeUser implementation and test

The previous implementation did not work correctly when calling
changeUser() before the handshake was done which became apparent when
restructuring the test. The new implemenetation passes the
handshakeInitializationPacket to the ChangeUser#start method, so it does
not have to be available when enqueueing the sequence.

Additionally I removed some uneeded code, such as
ChangeUser#scrambleBuffer and convention violations such as accessing
private properties of another object.
Handle Connection#config state for changeUser

This patch makes sure that the Connection#config state is only mutated
once the ChangeUser sequence is starting. Before that the old state is
assumed.
Make sure changeUser errors are fatal
Fix Sequence#ErrorPacket default handler

This was broken, but all Sequences except for Quit overwrite this
handler, so it is unlikely to have caused issues. Anyway, OOP sucks,
long live OOP.
Remove redundant code
Document new changeUser functionality
Merge branch 'change-user'