RFC position code

This is a stab at the position code. Any feedback welcome.

I need to at least clean it up and add more tests. Just want to make sure it's going down the right track.
For spot prices we need to shift if the identifier is contained in the shifted date range, and throw an exception if there's a non-trivial intersection between the two.