Updated default value handling for optional fields

This resolves #20 

This PR sets default values to ```null``` during decoding for all optional fields that do not have default values assigned in the schema.

It adds support for ```float``` and ```double``` default values defined in the schema.

It migrates the benchmarks to use [benchmarks.js](https://github.com/bestiejs/benchmark.js) to make it easier to add additional benchmarks.  Note the new dependency in ```package.json```.


To compare the performance of this PR to ```master```, simply copy ```bench/index.js``` to a new, nonversioned file and run that directly in the ```master``` branch.  I was getting comparable numbers between this PR and ```master``` within the range of variability between tests in general.

This adds new tests of optional fields.