Add settings check prior to opening transaction in backup.safe_load

Fix #159
Change internal structure of DataView to be 'facet'-based

This was required to implement #81 since there was no way to flag
individual columns in the structure that it was in. This is a more
robust structure composed of a list of dicts each of which with at least
one key 'concept' which is the primary key of the concept the facet
represents.

Each facet can now be disabled if an error occurs while being parsed.
Facets can have their 'visible' attribute set to False to denote this it
is only intended for sorting the data.

This is a backwards compatible change as it works with the previous legacy
input, however the output is in the new structure.

Read more http://avocado.harvest.io/wip/view-facet-validation.html

Resolves #82
Fix #81
Merge pull request #161 from cbmi/issue-81

Change internal structure of DataView to be 'facet'-based
Merge pull request #160 from cbmi/issue-159

Add settings check prior to opening transaction in backup.safe_load
2.2.0 Release
2.2.1 Bump
Test that an unpublished category unpublishes associated concepts
Update concept manager test to fix category assignment
Require a published category(if not null) for concept published set
Merge pull request #163 from cbmi/issue-158

Require a published category(if not null) for concept published set
Exclude concepts without fields from the ConceptManagers published set

This commit includes a test to make sure that this is indeed the case.
Merge pull request #164 from cbmi/issue-150

Exclude concepts without fields from the ConceptManagers published set
Migrate search features to use Haystack 2.x

This currently uses haystack 2.0.0 and whoosh 2.4.1. Note, this is not
latest stable versions of either due to incompatibility issues. See
http://stackoverflow.com/a/19502309/407954
Add comments to explain the Haystack functionality being used
Update search document templates to not render None values

This utilizes the template filter `default` to replace None values with
and empty string.
Searching for the empty string returns zero results
Fix formatting for flake8
Define a fixed set of data values to test against

One of values failed ("IT") due to it being a stop word. To prevent these
hidden issues from cropping up as development continues, an explicit set
of values are now tested.
Define a base DataIndex class to remove redundancy

Note, the indexes.Indexable mixin cannot be used unless get_model
returns a valid model. That is the reason why it is used in the subclasses
and not the DataIndex class.
Abstract out search method to remove redundancy across managers