Merge pull request #12 from jwhitlock/1095584_postgres_tests

fix bug 1095584 - PostgreSQL fixes
Merge pull request #14 from jwhitlock/1093106_feature_relations

Fix 1093106 and 1093120 - Fixes for browse app of test data
Merge pull request #15 from jwhitlock/1093122_django_17

fix 1093122 - Convert to Django 1.7, migrations
bug 1098672 - add and populate Feature.mdn_uri
bug 1098672 - Switch feature.mdn_path to .mdn_uri
bug 1098672 - Drop feature.mdn_path from database
bug 1098672 - Update loader for Feature.mdn_uri
bug 1098672 - Update browse app for mdn_uri
fix bug 1098672 - Update documentation
bug 1079932 - Convert load_spec_data to sync

tools/load_spec_data.py now reads existing data, compares it to data
loaded from SpecName and Spec2, determines new, updated, deleted, and
unchanged data, confirms with the caller, and then executes the
operations.

Also:
- Adds tools/resources.py, for storing related API data
- Adds tools/tests/test_resources.py, for unit tests
- Adds subset of tools to automated tests and coverage
- Adds support to Client for deletes, updates, and URL generation
bug 1079932 - Handle null to TranslatedTextField

Handle passing JSON null as value of optional TranslatedTextField.
Previously, TranslatedTextField.from_native expected a string value.
bug 1079932 - tools/load_webcompat_data.py to sync

Convert tools/load_webcompat_data.py to use sync semantics rather than
load to an empty API semantics.  Includes:
- Handle null IDs (for example, feature.parent for a root feature)
- Handle 'falsey' IDs (such as placeholder 0 for the chrome Browser)
- Switch Resource.to_json_api to default to including sorted fields
- Fix Support.alternate_name_mandatory to Support.alternate_mandatory
bug 1079932 - Add tools/download_data.py

This tool is used to download the data from the API.
bug 1079932 - Add tools/upload_data.py

This tool is used for uploading data from disk versions of JSON API.
bug 1079932 - Refactor logging and API download

- Loggers are now names 'tools.(module name)', and command line tools
install a handler for the 'tools' logger.
- Client.get_resources now .get_resource_collection, drops logger_name
  parameter.
- Collection.load_all now uses Client.get_resource_collection, for
  better logging of massive resource chains.
- Collection.change_original_collection drops logger_name parameter
bug 1079932 - Add docs for data repository

Data is stored at https://github.com/jwhitlock/browsercompat-data.  Can
be moved to Mozilla-owned repo, or a new repo can be created using
tools/download_data.py.  Data and API code is at
http://browsercompat.herokuapp.com.
bug 1079932 - Improve browse app for Versions

- Display dates as 2014-12-05 w/o hour / minute / second
- Wrap release_notes_uri links in <a></a>
fix bug 1079932 - More ordering in JSON API

- Translated fields - 'en' first, then other languages in alpha order
- Use OrderedDict more to preserve order
- Use unicode more consistantly
- Use JSON serializer in diffs, to preserve field order
- When order doesn't matter, sort related IDs by ID in cache
bug 1077879 - Add HTML variant of feature view

Includes basic representations of resources, including:
- Browsers - Translated names
- Features - Translated name, default flags
- Maturity - Translated name
- Section - Translated name, number, notes, and link
- Specification - Translated name and link
- Supports - 'yes' supports w/ default flags, no notes
- Version - version show on 'yes' support, no links