Code cleanup and added caching of instances

- Code is properly documented.
- Methods throw more explicit exception `InvalidArgumentException` when an invalid argument was supplied.
- Throws are documented.
- The class file has a file documentation.
- Added method `getInstance($filename)` which preserves memory and adds reachability to the same CSV object through different scopes.
- Added example usage of instances in both the examples directory and the readme file.

@johnnyfreeman