Refactored I/O classes into separate package.
Added docs for io package.
Support a custom data storage layer.