Updated I/O dox

See #680.

Done:
* Introduced dox-only concepts FormattedFileConcept, FormattedFileInConcept, FormattedFileOutConcept.
* Updated SmartFile dox.
* Updated BamFileIn/BamFileOut dox.

Todo:
* Document the other file formats (as soon as you review this PR).
* Document low-level I/O (e.g. VirtualStream)
* Make all read/writeRecord(record, context, iter, format) functions private as they are misleading (@weese is there a need for this lower layer?)
* Rename the SmartFile class as FormattedFile, as the name SmartFile is misleading (@weese do you agree?)
* Improve the dox for concepts (see #763).

I assign @rrahn but also @holtgrewe might want to have a look.
This concept defines no interface. 
So all classes that implement this concept actually do not implement anything. 
Can it then be removed?
The same goes for FormattedFileConcept and FormattedFileRecordConcept.
There should be at least one interface or Metafunction defined by the concept?