adds EventItem fields uid & venues. new VenueItem class.

EventItem['uid'] is the non-updateable, unique id of the event used to prevent dupes.
e.g. 'http://lanyrd.com/2014/pycon', or 'http://api.seatgeek.com/2/:seatgeek_id'
Should avoid changeable fields, e.g. a url with a query string or an event title,
but still prefer unique urls. There will not always be a unique url so get creative.

EventItem['venues'] is a list of dicts representing the venue. A new
design paradigm is necessary to handle this "complex" of a Field.
it was not straight forward how to implement via scrapy's abstractions
and I imagine we'll frequently need to reuse this pattern down the road.

Because venues requires a list of multi-item dicts, processing
these dicts through EventItem['venues'] is difficult. I created
VenueItem to handle all pre and post-processing and validation for
individual venues. After venues have been loaded and placed into a
list, they can be added to the EventItem. This allows us to maintain
centralizing our biz logic in the items.py and loaders.py and
simplifies writing spiders.

This commit also removes uneeded processors. I realized I didn't need
parse_date() because dateutil.parser.parse() is legit.