Caijim/emaillist

Backend+Frontend code for Email List tool on instructor dashboard page (under membership tab)

A few things:
1) Javascript is not clean. Any pointers would be greatly and graciously appreciated
2) In the urls file, I had to double up on some urls like the following just so I could call reverse(..) on them (see instructor_dashboard.py) so I could use the parameterized version in js. If I don't add the non-param'd version the page doesn't load. What is the way around this?

url(r'^get_single_query/(?P<inclusion>\S{2,3})/(?P<queryType>(Section|Problem))/(?P<stateType>\S+)/(?P<stateId>\S+)$', 'instructor.views.api.get_single_query', name="get_single_query"),
(r'^get_single_query',
  'instructor.views.api.get_single_query', name="get_single_query")


Thanks, and sorry for the huge changelist

tagging @jbau @stvstnfrd @kluo  for reviewing

We seem to be repeating this `inclusions = (...)` section; can it be
shared? something like:
```python
DEFAULT_INCLUSIONS = (
    ('A', INCLUSION.AND),
    ('N', INCLUSION.NOT),
    ('O', INCLUSION.OR),
)

class QueriesTemporary(models.Model):
    inclusions = DEFAULT_INCLUSIONS
    # ...

class QueriesStudents(models.Model):
    inclusions = DEFAULT_INCLUSIONS
    # ...
```

Or even simpler:
```python
INCLUSIONS = (
    ('A', INCLUSION.AND),
    ('N', INCLUSION.NOT),
    ('O', INCLUSION.OR),
)

class QueriesTemporary(models.Model):
    inclusion = models.CharField(max_length=1, choices=INCLUSIONS)
    # ...

class QueriesStudents(models.Model):
    inclusion = models.CharField(max_length=1, choices=INCLUSIONS)
    # ...
```