[mdoc] Platform/Owner tagging

You can now maintain documentation for a library that is supported on multiple platforms in a single set of documentation. Types and members will be tagged with information about what platform it is supported on. The slightly more general concept of "owner" was chosen because this feature will eventually support more than just platforms ... it will ideally also support things like being able to tag the documentation with what PCL profile it's supported in. 

The biggest change is that the docs are now stored in the “unified” form on disk. After an `mdoc update`,
the XML files will be stored in folders that lack the “dropped namespace” (previously, it was stored in “classic” form, or with the dropped namespace). This makes it easier to have multiple frameworks that share common namespaces (other than the dropped prefix). Running mdoc update with the appropriate `dropns` parameter  will reformat and move files into the now-correct folders. If there are conflicting type XMLs between the two assemblies that are being merged, the version from the first assembly on the `dropns` list will be given preference.

This pull request also slightly changes the format for dropping namespaces on both the update and assemble
commands from previous versions.

To add owner information … just add `=ownerName` to the assembly list. So in the example below, Assembly1 is attributed to "Framework1", while Assembly2 is attributed to "Framework2":

    mdoc update Assembly1.dll=Framework1 Assembly2.dll=Framework2 -o en

Dropping namespaces … the assembly from which the namespace is being dropped is now added to the list
of dropped namespaces. This makes it easier from an implementation standpoint to know which types and members should the resulting namespace be dropped from:

    mdoc update Assembly1.dll Assembly2.dll --dropns="Assembly1.dll=DroppedNS Assembly2.dll=OtherDroppedNS"

When assembling the classic doc set (ie. tree/zip) after a namespace has been dropped, you now specify the namespaces that have been dropped. Unified does not need any special command line formulation (it was reversed previously) for this particular feature (though you'd still have to pass in `ntypes` if the "unified" assembly has those special native types):

    mdoc assemble en/ --droppedns="DroppedNS OtherDroppedNS" --out=out-docs

The corresponding changes to support the display of this new "owner" information has been added to monodoc and the XSL templates.
I *really* don't like this semantic of whitespace-separated values.

I would far prefer that each "dropped namespace" be a *separate* command-line option, e.g. instead of:

    mdoc update Assembly1.dll Assembly2.dll —dropns="Assembly1.dll=DroppedNS Assembly2.dll=OtherDroppedNS"

have:

    mdoc update Assembly1.dll Assembly2.dll \
        --dropedpns=Assembly1.dll=DroppedNS \
        --dropedpns=Assembly2.dll=OtherDroppedNS

This can also be more reasonably supported within `OptionSet` by using [OptionSet.Add<TKey, TValue>(string prototype, string description, OptionAction<TKey, TValue> action)](http://docs.go-mono.com/?link=M%3aMono.Options.OptionSet.Add%3cTKey%2cTValue%3e(System.String%2cSystem.String%2cMono.Options.OptionAction%3cTKey%2cTValue%3e)):

    {"droppedns=",
        "The namespace(s) that have been dropped in the documentation from this version of the assembly."
        (assembly, ns) => {
                droppedNamespaces.Add (assembly + "=" + ns);
    }},