Handle file/index not found errors in reader classes gracefully instead of segfaulting!

This has been a common complaint against gamgee of late, and
with very good reason!

Resolves #336
Hmm... we made a huge mistake in the GATK at some point when we had a million different exceptions and we were throwing them all over the place with the wrong intent (because nobody knew which exception to throw) that @depristo came along and created the *ReviewedStingException* so we would all know that this exception came from the GATK tool author, not somewhere crazy in the engine. 

What I ask here is: *are we walking that same path by distinguishing too much and granularizing the number of exceptions the developer should choose when throwing*?

Some things could be explicit in the error message taken as a parameter by the exception, other things are better qualified by a different class of exception entirely. I do advocate simplicity in this case.