- dropped SKIP_EMPTY and READ_AHEAD due to strange behavior when using c...

- dropped SKIP_EMPTY and READ_AHEAD due to strange behavior when using current(), seek(), and rewind(). Skipped empty rows instead with code.
- getLineNumber now uses SplFileObject::key() for accurate numbers
- getLastLineNumber(), for possibly splitting up a large CSV file and processing in a queue
- getCurrentRow() to accurately get a array from the current line
- advanceTo() to move to a file line
- setHeaderLine() to set a header line that's not the first row
- removed incrementLine() since the core is using SplFileObject for seeking, the method would make line numbers inaccurate
- rowIsEmpty() to check if it's a completely empty line or empty with delimiters
- Unit tests and fixtures to test all new and refactored behavior

This is a pretty major shift in the core code so if you see any issues let me know. I got about 87% official coverage from Xdebug, but I'm sure it's a lot more. For some reason the constructor is getting called, but the code coverage doesn't show that those lines are getting called.