Allow empty image refs for boot-from-volume

Pretty much most of our code handled this just fine, except for the json schema.

This is mostly a PR adding tests for the case we want to support.

Future task that should be added:
- Empty image ID can only be submitted as a request along with `block_device_mapping`, else Nova returns 400.  Add block device volume ID validation, and validation that ensures that the blank image ref must be accompanied by some block device mappings.

TODO:
- [x] Actually nova seems to also accept null, or no image.  This PR needs to be modified to do so.

Integration tests are in https://github.com/rackerlabs/otter/pull/712
Yep, because no matter how it gets sent to nova, Nova interprets it as "", and `image=` is the only way to filter for the empty string