Support tags and root-disk constraints.

Add support for setting/retrieving the missing
constraints: "tags" and "root-disk".

Fix a bug preventing constraints to be removed
in sandbox mode.
Also improve the constraints validation
performed before sending the API requests.

Note that currently bug 1309449 [1] prevents
tags to be removed when using a real juju-core
environment.

QA:
QA must be done in sandbox mode and real env [2].
It involves deploying charms, setting constraints
(including the new ones), changing and removing
them, to see if the backend reacts correctly.
When setting tags, ensure they are normalized (
e.g.: "foo bar, spam," is turned into "foo-bar,spam").
Also, please make sure that constraints are
preserved when exporting/importing bundles, whether
they are set or missing/removed.


[1] https://bugs.launchpad.net/juju-core/+bug/1309449
[2] E.g. by using juju-quickstart to deploy the GUI,
    then running `juju set juju-gui juju-gui-source="https://github.com/frankban/juju-gui.git tags-constraint"` and then waiting for the GUI
    to be ready.