Modify bfGetReader to setId() only on valid id

This is a breaking change in the behavior of bfGetReader. All the ui logic for
querying a valid path is now removed from the low-level function and should be
called upstream. A reader is always created but the `setId()` call is only
made if the input id is a valid file path or a fake string.
Add tests to check the new signatures of bfGetReader()
Fix comments and header
Throw error in bfGetReader is id is supplied but not found
Merge pull request #1272 from sbesson/bfGetReader_noid

bfGetReader() returns empty reader