Added some new exception types
Added a smart array pointer
Implemented the progress handler and chunk-based reading.