DO NOT MERGE: hardwired ux code for changing static pages to pages and allowing course nav manipulation
cleaning up the UI to match current story better
cleaning up the html and style for pages in Studio
Changed "Status Page" -> "Page".
Display list of "built-in tabs" on Pages page.

Added defensive code for tabs that do not have the 'name' field stored in the database.  This is short-term solution until the LMS and CMS code is refactored.
Changed CSS class from locked to fixed.
additional styling for fixed state on Studio Pages
add a new page action added to bottom of Studio Pages
restoring drag and drop on Studio Pages

Dev changes for viewing tabs and refactoring the tab code.
Changes to address issues found from LMS unit tests.
Add is_hideable flag for tabs so the "eye" doesn't appear in Studio
for now.
1. Changes to fix issues in LMS unit tests.
2. get_discussion method - Need to continue to support
external_discussion links for now since used by 6.00x course.
3. Changed CourseTab.type() from an abstract method to a class
attribute instead.
4. Extended the __eq__ operator to support comparing with
dict-type tabs.
5. Added a boolean raise_error parameter to the validate method to
support calling from the __eq__ method without throwing exceptions.
6. Added _validate_num_tabs_of_type method.
changed active_page_name to tab_id.
changed primitive_insert to create tab object.
Changed test_split_modulestore test to support serializing objects
that are fields in a Course.
Changes to address comments/suggestions in PR, including
removal of importing Settings in cms/envs/common.py.