Initial working producer. Still need to:
- send messages instead of just inserting into array
- send start and end messages
Added celery for task queueing (on top of rabbitmq).  Simulator works
with logging out to Celery workers.  To run:

python
>>> from tripgrid.simulator import *
>>> main()
Forgot to add these in the last commit.
added comment header
Added TripGrid, the queues required to back the queries.  We're currently
running into some concurrency issues that the python mutex isn't quite fixing:

[2013-12-11 02:01:45,163: WARNING/Worker-3] TripBegin 1: -71,116
[2013-12-11 02:01:45,163: WARNING/Worker-4] TripBegin 0: -6,-88
[2013-12-11 02:01:45,164: WARNING/Worker-4] Added trip ID 0 to tripQueue: [0]
[2013-12-11 02:01:45,165: INFO/MainProcess] Received task: tripgrid.TripTasks.TripEnd[ad179106-5bd4-4aaa-b017-e85ad4202713]
[2013-12-11 02:01:45,165: WARNING/Worker-3] Added trip ID 1 to tripQueue: [1]
[2013-12-11 02:01:45,166: INFO/MainProcess] Received task: tripgrid.TripTasks.TripBegin[a7028f3d-65ed-403f-8d19-9bde516cbf49]
[2013-12-11 02:01:45,168: WARNING/Worker-2] TripEnd 1: -72,111 = $6
[2013-12-11 02:01:45,180: INFO/MainProcess] Received task: tripgrid.TripTasks.TripBegin[031c9942-ee84-4415-a433-3764ec3e00a7]
[2013-12-11 02:01:45,188: INFO/MainProcess] Received task: tripgrid.TripTasks.TripEnd[2783dc6f-4f1d-45d0-b9be-e7e4ae1a17fd]
[2013-12-11 02:01:45,188: INFO/MainProcess] Received task: tripgrid.TripTasks.TripBegin[abef9810-ae10-48bd-a3b0-3226be2d5d8e]
[2013-12-11 02:01:45,201: INFO/MainProcess] Received task: tripgrid.TripTasks.TripBegin[94f8a18b-e644-4ad3-a307-12e14400c809]
[2013-12-11 02:01:45,206: INFO/MainProcess] Received task: tripgrid.TripTasks.TripEnd[fac6e999-7937-44c2-a560-a87267539968]
[2013-12-11 02:01:45,224: INFO/MainProcess] Task tripgrid.TripTasks.TripBegin[59a3836e-f849-47f2-be90-9105d4d8063a] succeeded in 0.0610984319937s: None
[2013-12-11 02:01:45,228: WARNING/Worker-4] TripBegin 2: -52,-123
[2013-12-11 02:01:45,228: WARNING/Worker-4] Added trip ID 2 to tripQueue: [0, 2]
[2013-12-11 02:01:45,228: INFO/MainProcess] Task tripgrid.TripTasks.TripBegin[f27a958d-4094-426f-b0d3-455a795596f2] succeeded in 0.0654508110019s: None
[2013-12-11 02:01:45,229: ERROR/MainProcess] Task tripgrid.TripTasks.TripEnd[ad179106-5bd4-4aaa-b017-e85ad4202713] raised unexpected: Exception('Trip ended for unknown tripID', 1, [])

Basically, the tripQueue doesn't seem to be consistent.  Notice in the example
above how the tasks come in with 1 first, then 0, but ampq somehow processes 0
and then 1.  In either case, the second add should have tripQueue: [0, 1].

Other changes in this commit:
- scratch.py: testing out how to do certain python stuff.
- README how to run stuff
- notes: update on my notes on this.
1) Removed mutex: This didn't help with what we thought was a concurrency issue.
We basically have a transaction problem.  The Celery tasks each have a different
thread/process so we shouldn't be sharing an object between them, because
there's no memory coherency there.  We really need to use a database backend
that can handle the transactions.  We were trying to get away with it here...but
our poor man's key/value store wasn't sufficient.

2) Removed calls to TripTasks.  We hadn't learned how decorate class methods as
celery tasks, which we're doing now.
De-class-ified TripGrid, as it was having pickling (serialization) problems with
celery.  Added Redis backend to store the data to add the synchronization we
need.

Tested as working with the redis backend.  Data looks OK now, so need to
implement the queries.
Refactored common code to TripCommon.py.  Added a TripQuery module that can
count the ALL trips, but we have a multiple-counting problem where a single trip
may be counted many times if its in several queues.
This refactor was left out of the last commit.
Bounded the locations returned to be within the limits.  Also refactored g_delta to TripCommon.py
Added helper functions and refactored some stuff from LocationGenerator.
Fixed bugs:
- locations returned by Location generator were getting past bounds after delta applied.
- redis return value interpretation:
  - comparison was against string and not integer value.
  - was comparing y value against l[0], which is the X value
  - wrong interpretation of locations retrieved from zrange:
    LESSON: -> values retrieved from redis are strings and must
    be converted to pythonic use.
- swapped arguement for zrange: was -1,0, should have been 0,-1.
Added time slices, need to refactor the edge checks.
Added logic to keep 500 concurrent trips always running.
Fixed bugs and successfully tested all tests.  TODO:

- remove debugging comments and logging statements
- understand the synchronization issue between input and query.
Adding test driver.
migrated XXX debugging print statements to log statements.
- simulator waiting on thread instead of sleeping.
- date -> epoch seconds translation to support time query.
- Nits here and there.
Added notes on how to run simulator and test driver.
Merge branch 'master' of https://github.com/leftbyte/tripgrid

Merging in new work from local branch.