add the item model

I would love to use a better than 'Item' here but it's best not to guess
out of context. 'offer' and 'product' both seem a bit too exclusionary
and we only have a small set of exmaple data to go off of.

Similar to the Merchant situation, the only way to determine the
uniqueness of an Item is by looking at several columns. Here we have to
look at the description, price, and merchant id. It's possible for a
merchant to offer the same description with multiple prices (discounts
for membership, etc.) or for multiple merchants to offer an item with
the same description (competing businesses).
create the transaction model

transactions are the glue between the rest of our models. they tie
purchases made by a purchaser of an item to the item itself and how many
of them were bought. this also implicitly ties them to the merchant that
sells the item, in case that information is needed.
configure database_cleaner

from here on out I'll need to write tests that check persistance, and so
I'll also want to clean out the database between each test so that
previous transactions don't interfere with test results. I chose
database_cleaner because I'm familiar with this library.
create the csv_importer

this model is responsible to parsing a given csv file and persisting the
data to the appropriate models. for each given row it:

  creates a new purchaser for the given name (if needed)
  creates an item for the given description and price for the merchant
    (if needed)
  creates a new merchant for the given name and address (if needed)
  creates a transaction for the purcasher indicating the item and
    quantity purchased
total up the parsed transactions on an import

for each import we want to know the total worth of the transactions.
since we don't need to save the imported file that is associated with
each record, the simplest way to track the total for just the uploaded
file is to do so while creating the records.
set up controllers/views/routes for uploading

in order to actually upload a file we need a controller and a form for
doing so. Since the routes will get be at GET /import and POST /import
the form doesn't need to take a action, but it does need to be multipart
in order to accept file data. there are no models to associate with this
form so I just use a _tag helpers to create it.

the response is equally as simple with only the bare minimum in
error-checking (it checks to see if the form is there). since the data
is promised to be properly formatted and all there, this is technically
all that is needed for the problem.
add some rudimentary error checking to the import action

while it's true that we expect to inputs to be correct, it still feels
wrong to have IO without any error catching. this adds some minimal
error checking for the kinds of errors we might expect
(ActiveRecord::RecordInvalid and IOError) from our form parsing.
specify gem versions for compatibility

while developing this application I wasn't strict about gem versions,
but now that it's finished I want to ensure that it will work for
whoever uses it in the future.
add instructions for setting up the application

although the application runs on just about all of rails' conventions,
it's important to have all of the dependencies and installation
procedures listed in the README.