minor restructuring (avoid mid-function returns)
renamed "off velocity" to "release"
the _read*Event() functions now actually return events
renamed @end_of_track to use camelCase for consistency
_read* private methods now return the object they are reading
some member variables were made "private" with a _ prefix
added track number details to warning and error messages