Creative commons licensing support

### Background
This pull request allows course content to be published under the Creative Commons license, with support for CC options like: BY, NC, ND, and SA. When a course is set to a certain license, the footer of each course page will hold the license information. Additionally, videos can be licensed separately as well. See [creativecommons.org/about](http://creativecommons.org/about) for more details on the CC license.

### Studio updates
Adds a feature flag to enable/disable Creative Commons licensing in general. Through the advanced course settings, you are able to disable the licensing option for a certain course.
A license selector is added to the course settings page and video edit modal. It allows the publisher to license their work under the latest Creative Commons license.
In the course outline, and underneath videos that have a license set, the license will be previewed as it would be displayed in the LMS.

### LMS updates
Adds a feature flag to enable/disable Creative Commons licensing in general. When enabled, it depicts the license underneath each course page and video element.

### Testing
When the feature flag CREATIVE_COMMONS_LICENSING is set to False in CMS and LMS, the views of the course settings editor, video edit modal, course outline page, and view pages should not be changed.
In case the feature flag is set to True, the following screens in Studio should have changed:

#### in Studio
##### Enabling CC Licensing
To enable the CC Licensing feature, make sure the CREATIVE_COMMONS_LICENSING and DEFAULT_COURSE_LICENSEABLE feature flags are set to True. In case the latter is set to False, you can also configure it per course, by navigating to the Advanced Course Settings and setting the Licensable parameter to True.
![course_advanced_settings](https://cloud.githubusercontent.com/assets/2682577/5412086/68ecf17e-8209-11e4-9e9a-b1694965ae3c.png)

##### Setting the course license to: CC
CC allows you to set the license with certain options. Attribution is set by default. Non Derivatives and Share Alike are XOR (they cannot be set at the same time).
![course_edit_cc](https://cloud.githubusercontent.com/assets/2682577/5412097/80b88aa2-8209-11e4-94ac-2f7da79245c4.png)

##### Setting the course license to: All rights reserved
![course_edit_arr](https://cloud.githubusercontent.com/assets/2682577/5412100/89d0f138-8209-11e4-95e9-322598196916.png)

##### Showing the course content license in the outline
![course_outline](https://cloud.githubusercontent.com/assets/2682577/5412106/9c8ef5c2-8209-11e4-8df7-185317204a42.png)

##### Editing the course content license in the outline
![course_outline_edit](https://cloud.githubusercontent.com/assets/2682577/5412114/ae07c2b6-8209-11e4-9093-cbfe431b455f.png)

##### Editing video license
CC allows you to set the license with certain options. Attribution is set by default. Non Derivatives and Share Alike are XOR (they cannot be set at the same time).
![video_edit](https://cloud.githubusercontent.com/assets/2682577/5412129/c3b047c8-8209-11e4-90f5-065cfda406d5.png)

##### Video license preview
![cms_video_preview](https://cloud.githubusercontent.com/assets/2682577/5412131/cf9a92e6-8209-11e4-8705-131061114a8b.png)

##### Video license preview hover
Clicking on the license will open the correct page on creativecommons.org that shows all the details on that license. Except for the All rights reserved license, this license is not clickable.
![cms_video_preview_hover](https://cloud.githubusercontent.com/assets/2682577/5412137/d8f96ede-8209-11e4-88dd-ef6f713474ba.png)

#### in LMS
The test instructions are not available yet, as this is still work in progress. I will upload those as soon as the LMS part is done. The idea is that the license will look exactly like the previewed license in the video preview. Where the course content license will be shown in the grey background area that surrounds the content.

### Discussion
**As discussed with**: @sarina, @explorerleslie, @marcotuts

**Discussion links**:
* Previous PR: #5057 
* [https://openedx.atlassian.net/browse/UX-948](JIRA UX-948)
* [https://openedx.atlassian.net/browse/OSPR-42](JIRA OSPR-42)
* [https://openedx.atlassian.net/browse/OSPR-89](JIRA OSPR-89)
You may be able to rework this code so you only raise ValueError one time in the function. Not sure if it's worth it... would be something like:
```python
if license is None or license == "":
    return None
elif isinstance(license, License):
    return license
elif isinstance(license, dict):
    return parse_license(license=license['license'], version=license['version'])
elif isinstance(license, basestring):
    if license == "ARR":
        return ARRLicense(license, version)
    elif license.startswith("CC-BY") or license == "CC0":
            return CCLicense(license, version)
# If we get to here, we've not found any valid license type, so raise error.
raise ValueError('Invalid license.')
```
note I did a bit of reordering so the simplist cases come first. This makes the code nicer to read, generally.