Added Opaque Keys Support

- Updated CSV names
- Updated URL regex
- Refactored view tests

@rocha @dsjen @brianhw @mulby 
Is there anyway we could use ddt or something similar to parameterize the tests so we could just always run every test twice: once with a deprecated key and once with a new key?

If not, I like what @brianhw did in pipeline where he basically defined a different mixin for each type of course_id, so you end up with:

```python

class SomeTestCase(TestCase):
    # self.course_id defaults to a "new" format course_id
    def test_something(self):
        self.client.get('/foo?course_id={}'.format(self.course_id))

class SomeTestCaseDeprecatedKey(SomeTestCase, DeprecatedCourseKeyMixin, TestCase):
    # this will run all of tests from SomeTestCase using an old format course key
    pass
```