API changes, refactoring

- methods now return IEnumerable rather than arrays
- ObjectDisposedException now thrown if instance has been disposed
- better parameter checking
- improved documentation