Converted the service config viewlet to a view.
Pulled the conflict mixin object out from inspector.js into it's own mixin fn.
Split the config file upload methods into their own mixin to be used in multiple modules
Fixed failing inspector settings tests after the viewlet to view conversion
Replaced all of the moved methods with their originals so that the remaining viewlets which rely on them can still function.
Renamed mixin files to extensions
Merge pull request #164 from hatched/service-config-view

Notes
------
Shared methods from the inspector.js object mixins were split out into their own extension files to be mixed into the appropriate views. The original methods were left in the inspector.js file to allow the remaining viewlets to function properly.

To QA
-------
Exploratory QA on the inspector including databinding.

__databinding qa notes__
To test that databinding works deploy Ceph and use the following code snippit to change the model values
```
var srv = app.db.services.item(0); 
var cfg = srv.get('config'); 
cfg['auth-supported'] = 'fo2o'; 
srv.set('config', cfg);
```
Between every test refresh the browser
1) Run snippit without making any changes 
2) Change the ```auth-supported``` value, save the change, then run snippit
3) Change the ```auth-supported``` value, then run snippit (it should give you a red ! which you can click on to choose which value you want)
Converted the constraints viewlet to a Y.View instance.
Fixed failing inspector constraints tests from viewlet to view changeover.
Merge pull request #165 from hatched/constraints-to-view

To QA
-----
Make sure you can change the values for the constraints in the ghost and service inspector. Also testing the databinding functionality using:

```var srv = app.db.services.item(0); var cst = srv.get('constraints'); cst['cpu-cores'] = '110'; srv.set('constraints', cst);```
Converted the ghost viewlet into a Y.View.
Fixed failing tests from the ghost config viewlet to view conversion.
Merge pull request #166 from hatched/ghost-to-view

Notes
-------
The viewlet was converted to a view but there is still a few methods which needed to stay in the inspector.js file because the dom elements are rendered by the viewlet manager not the view. This will be fixed when we have our inspector subclasses.

To QA
---------
Exploratory QA on the ghost inspector (if there is a button/interaction, try it)
Converted the service relations viewlet to a view.
Fixed failing tests from the service relations viewlet to view conversion.
Moved the remove relation event handling into the relation inspector view
Sandbox mode addMachines API.

Implement the fake addMachines call, using
the error messages as returned by juju-core.

Include in the machine model some basic
container/machine number info which can
be parsed from the machine name.

Clean up the destroyMachines sandbox call.

Fix the go environment addMachines API call:
errors for specific machines are now
correctly handled (including error codes).

No QA needed.
Merge pull request #168 from hatched/relation-to-view

To QA
--------
- Deploy two relatable services.
- Open one of their inspectors to the relation tab. It should show that it has no relations.
- Create a relation, after a few seconds the relation should show up in the inspector.
- Switch to the other inspector and the relation should be there.
- Remove the relation and it should disappear from the relation list.
Position attributes updated to align with annotations in all cases.
Merge pull request #167 from frankban/add-machines-sandbox

Sandbox mode addMachines API.

Implement the fake addMachines call, using
the error messages as returned by juju-core.

Include in the machine model some basic
container/machine number info which can
be parsed from the machine name.

Clean up the destroyMachines sandbox call.

Fix the go environment addMachines API call:
errors for specific machines are now
correctly handled (including error codes).

No QA needed.
Converted service overview viewlet to view and moved half of the events over