Test case for embedded workspace

- This one will be hugely trickly, as we need a way to resolve mappings
  between all possible vhosts configured for this particular instance of
  PMR.  Will figure out the code to do this at some point.
Registry for mapping virtual host with portal.

- Also split up that site/product setup for the test layer.
Now handle the externally linked workspaces.

- Loader can now resolve embedded urls.
Some more tests.

- Changed the way URLs are generated/handled.  Absolute URLs will be
  used as is to trigger security restrictions if any, so that the user
  will be notified that something was wrong at the generation time.  Of
  course this won't help with what happens later, but users are going to
  use this however they like...
Added more tests

- Also unified the two sets of tests but run with two different layers.
Making this test model actually work.
With a demo to use the test main model.
Make the `pmr:` uri friendly for urljoin

- Whoops, it needed a headling slash to denote where the file path
  begins so that the normalization process can properly normalize
  relative links using a file on the root of the workspace.
Setup the demo model
The most basic integrated loader test.
Make the relative URL normalization actually work

- Now relative links within a model can load, also work with relative
  imports of embedded workspaces.
More test cases

- For integrating the loader into the CellML API utility, with various
  permission settings for the different types of objects.
Add in the mercurial live tests.

- Also had to prune defaultBases down to a single element to avoid
  causing plone.app.testing and/or plone.testing to die in a fire.
  Rather extremely annoying that it isn't working as expected or
  advertised, even.
One final push to get layers ordered correctly

- Somehow plone.testing layers (or something) isn't being constructed
  and then deconstructed in symmetric order, resulting in highly
  unpredictable failure modes depending on how/when tests are invocated
  with other tests.  This hopefully fixes that mess.
Layer ordering.
Config editor for hostname remap for CellML API

- Make it possible to edit the prefix mapping dictionary via a form.
- However, somewhere somehow there is a massive contract breakage that
  I am unsure to the source of its introduction - warnings are raised
  for running the tests.

Completes: tracker item 3751.
Changelog.