Enhancement Block Storage Controller

- Added framework for the block storage controller
Enhancement Block Storage Controller

- Did a basic hook up of the model so as to get full test coverage
- Logic of model for individual points still has to be filled out
- Some functionality in the controller needs to be finished based on the results of the model
Merge branch 'master' into enhancement_block_storage_controller
Bug Fix

- Bug Fix: Wrong URL generated by replace, see code comment for details
- Bug Fix: URL not updated for error message as replacement was not saved
Enhancement - Logging/Security

- Added logging when a caller tried to PUT a block directly to storage; even if not required, it's still a good thing to do.
Bug Fix - block put location specification

Considered using REGEX, however that would mean doing a REGEX search/replace which would not be very easy to track, etc. However, the simpler solution is to just breakdown the URL, remove/update the parts we need to, and then rebuild it.

There is also code there to be enabled once PR #173 (differing block ids between metadata and storage) is merged; it might need a little tweaking though but should be near 100% correct and just need to be uncommented
Bug Fix: Generator

- inmarker should return None if not found as that is the default for the boundary functions
Merge branch 'master' into enhancement_block_storage_controller
Enhancement

- Added test to Block Storage testing for when a Vault name is storage to ensure that it only removes the correct storage component from the URL
- Added the Storage ID to the Block Get End-Point
- Renamed the get_storage_block_id which translates a storage block id to a metadata block id to get_metatdata_block_id
- Add the metadata Block ID to the Block Storage PUT End-Point
Enhancement and Bug Fixes:

- Bug Fix: Tests needed to provide UUID instead of a SHA1 for the Block Storage End-Point
- Enhancement: Added create_storage_block_id() for tests
- Enhancement: Block Storage PUT is now functionally correct, all tests for Block Storage accurate (for now)
- Enhancement: Added more validation functions
--- Storage Block Get/Put Rule
--- Block Get Rule None OK
--- Storage Block Rule Get/Put None Ok
--- Storage Block Marker Rule
Enhancement: Consistent return X-Block-ID and X-Storage-ID where possible even if one is 'None'

- In all block related end-points return both headers where possible; only non-possibility right now is where we handle multiple blocks at the same time
- In the normal Blocks End-Points these should always both have values
- In the Storage Blocks End-Points it will be possible that X-Block-ID will be 'None'
Enhancement - more complete testing

- Added tests for the X-Block-ID and X-Storage-ID to block storage testing
- Added more complete URL test for the storage url mangling when the vault name is 'storage' as well
Enhancement: More complete testing

- Added test for X-Block-ID to heading a block through the normal blocks end-point
- Note: I did not see other tests where the X-Block-ID and X-Storage-ID could be tested for the Blocks End-Points
Merge branch 'master' into enhancement_block_storage_controller

Conflicts:
	deuce/tests/test_validation.py
	deuce/transport/validation.py
Clarification

- Renamed to "block_id" parameters to "storage_block_id" for the storage end-points for better clarity
Merge branch 'enhancement_validation_testing' into enhancement_block_storage_controller
Enhancement: Added Validation Testing

- Added validation testing for the new validation rules
Merge branch 'master' into enhancement_block_storage_controller
Merge pull request #162 from BenjamenMeyer/enhancement_block_storage_controller

Enhancement block storage controller