Add default options to open, get, put, del and batch

This is a proposal to add default options in all locations where those can occur: `_open`, `_get`, `_put`, `_del` and `_batch` (the `_iterator` function had default options-handling added by PR #32)

Previously an empty object was passed as the options argument which let the implementers of abstract-leveldown deal with the default options on their own. By elevating this to an abstract-leveldown responsibility, we can ensure this is handled evenly across all DOWN's.

All default options listed for leveldown have been added:
- [Default options for `leveldown#open([options, ]callback)`](https://github.com/rvagg/node-leveldown#options)
- [Default options for `leveldown#put(key, value[, options], callback)`](https://github.com/rvagg/node-leveldown#options-1)
- [Default options for `leveldown#get(key[, options], callback`)](https://github.com/rvagg/node-leveldown#options-2)
- [Default options for `leveldown#del(key[, options], callback)`](https://github.com/rvagg/node-leveldown#options-3)
- [Default options for `leveldown#batch(operations[, options], callback)`](https://github.com/rvagg/node-leveldown#options-4)
@rvagg we have a bunch of tests that reference `createIfMissing`, `errorIfExists` (see https://github.com/rvagg/abstract-leveldown/blob/master/abstract/open-test.js) (and their default behavior). since the defaults are non-falsy IMO it would be nice if abstract-leveldown set them for us