Add StoreIOException covering more error conditions.

- Generalizes WrapKeyException (deleted).
- Updated API and tests to reflect this.
Add more reasons to IllegalAddressException.
Add K2 native file-system driver.
Add a column 80 line-break.
Improve usability of K2Storage.open(String).

- Method now automatically percent-encodes ' ' (spaces)
  and '%' (stray percentages) in addresses so that the
  caller does not have to.
- This is not a complete encoding process; caller must
  still manually encode more complicated address strings.
- Also updated unit tests for this.
Bug fixes to address checking.
Tweaks to address acceptance logic on driver.
Simplify address transformation/checking.
Clean up comments and formatting.
Catch relative paths after normalization.
Add a note about file locking to javadoc.
Refactor address processing to utility class.
Add check for required proto cores.
Add unit test and bug fixes for storage driver.
Completing file-system driver unit test.
Add unit test and minor fixes to AddressUtilities.
Minor change to test data.
Simplify existing unit tests.

- Throw unexpected exceptions instead of catching them.
Merge branch 'master' of github:darylseah/K2
Made proto 'type' field required.

- Also added comments on existing required checks.