Refined plug-in system

## Plug-ins

Functional plug-in system, plug-ins are looked up at run-time and integrated into the validation process based on which family each instance belongs to.

E.g. an instance of type *"model"* is assigned all plug-ins of type *"validator"* for family *"model"* for its supported *"host"* (e.g. Maya).

Summarising its behaviour here:

- https://github.com/abstractfactory/publish/wiki/Plugin-system

## Tests

Also in this request are tests running without a fixture; e.g. a Maya scene is constructed within each test. 

The difference between this and the [existing tests][existing] is that these aren't used interactively within Maya, but rather triggered automatically by `python -m unittest discover`.

Have a look at [test_mayapy.py][mayapy] for an example.

## Persistent configuration

An initial version of externalised configuration, in config.json. The idea is for users to modify this file and thus affect the overall operation of Publish.

- See also [config.json][conf]

[conf]: https://github.com/mottosso/publish/blob/708b2e76733dead8b3d7a32e75ebecd99525e354/publish/config.json
[existing]: https://github.com/abstractfactory/publish/tree/master/resources/tests
[mayapy]: https://github.com/mottosso/publish/blob/708b2e76733dead8b3d7a32e75ebecd99525e354/publish/tests/test_mayapy.py