moved db upsert logic into items.py and loaders.py.

the "correct" way and makes it far more extensible for future
development, albeit (possibly) slightly more convoluted.

also adds category, venue, state, lastcrawl, and body to EventItem