Convert to house style

Aside from whitespace,
 - put `discard` in the same 'scope' (just for tidiness)
 - use `new Buffer(0)` instead of `new Buffer("")` (closer to metal)
Test send/expect 0 body frames for 0 byte messages

If a message has no content, no content body frames should be sent, or
expected. See spec §4.2.6.

Corrected the comment too, including removing the bit about
interleaving message frames: they can't be interleaved with method
frames after all. (Which means the code is too forgiving. Ah well.)
Distinguish among errors thrown while processing messages

There's three sources of errors: the server screwing up, the library
screwing up, or the application screwing up. To date, errors thrown
while handling messages were not accounted for; worse, they upset the
machinery because it uses exceptions to signal server errors.

All the varieties of error have the same ultimate consequence; however
it's important to separate our own error handling from what we tell
the server. For this reason I've separated `reason` (the message for
the server) and `error` (the actual error reported in the client),
rather than constructing the error from the reason.
Reindent
Clean up code generation, especially formatting

First and foremost, use `util.format` instead of 'catting strings
everywhere; format tends to be shorter and far more readable.

Push the printlns down into one place rather than mixing with
definitions; and just use println in subroutines, instead of
collecting a big list of lines then joining it. Simpler for everyone.

Fixed one bug: method argument with falsey defaults were treated as
mandatory.

Minor rearrangement of the code generated for cons'ing buffers and
testing field values.

Avoid accidental globals for the *info values.

Lastly, instead of trying to indent things myself, emit it 'flat' and
use UglifyJS to format it (`-b` option to uglifyjs). Also let UglifyJS
remove redundant variables etc (`-c` option to uglifyjs). Stop short
of making it unreadable though (`sequences=false`).
Test the type of arguments

This allows for better error messages, and doesn't really have any
more overhead than testing for presence first. (Although in the case
of properties, which will often be missing, it might be better to test
for presence first.)
Tidy up Makefile, add clean target
Back out the guard on rejecting pending RPCs

It's not clear what is the glitch here, so I'd rather not paper over
it for the minute.
Merge branch 'issue10'
Notice at top of generated file
Use. Strict.

Keep myself honest.
Add defs.js for tmp deployment