Exon objects

Added methods to EnsemblRelease:
* `exon_by_id(exon_id)`
* `exon_by_transcript_and_number(transcript_id, exon_number)`
* `exons_at_locus(contig, position)`

These return Exon objects, which in addition to basic location info, also track the offsets of start and stop codons. 

I'm not totally comfortable with Gene, Transcript, and Exon objects (neither their interface nor their current implementation, which makes lots of wasteful database queries). However, I haven't yet found anything more convenient for writing varcode. I'm open to scrapping these things later, once we understand a little more about how pyensembl can/will be used. 
Why do you need `list(...)` if `.values()` returns a copy of the values in `list` form?

(Ah, looks like Python 3 returns iterable views. Never mind. Still posting the comment for posterity.)