Add RateFile class with placeholder implementation

In order to continue moving forward we tackle the first error that we
see in the feature spec. This brings us to the `RatesFile`. However, at
this time we don't really know what this should do. We know it has a `read`
method, that takes a file path. And we infer it should returned
"something" that has parsed rates. What that something is, is still
open.

Instead of skipping around to something else, or guessing at what we
"think" we will need, we just add a placeholder. This is simply a
helpfully named symbol. This way, when we attempt to do something with
it later (when we actually know what we want), we'll get a more helpful
error. It also makes it easier for use to grep the code to find where we
added it.

In the test we do add the test file as, at this point, this is our seam
with the file system. Even though we aren't technically using the file
just yet. We know that we are passing it into the method. As such, we
should ensure our test state appropriately matches our intention; as we
understand it currently.
Add the exchange shell.

Once again, we're not really sure how we want this object to work. We
aren't directly interacting with it yet, just passing things around.

Our tests reflect our lack of knowledge, though this is the current
understanding of the system. There is nothing wrong with this. It shows
that we aren't sure what is going to happen yet.
Add TransactionsFile with placeholder.

This is basically the exact same commit as we made for the `RatesFile`.
We are focused on moving forward with an implementation we don't know
anything about just yet.