API Make HTMLValue replace-able via DI

Extracted common code out to SS_HTMLValue and made abstract, then
put HTML 4 specific code in SS_HTML4Value. Its now possible to
replace HTMLValue with one designed for HTML 5 or XHTML

Requires a code change from new SS_HTMLValue to
Injector::inst()->create(HTMLValue)
Make ShortcodeParser use HTMLValue for HTML parsing
FIX Make multiple TemplateManifests not corrupt each other
NEW Let shortcodes be disabled in HTMLText & HTMLVarchar
NEW Disable shortcodes in $Layout and $Content in SSViewer
API Make default_cast Text and not HTMLText
API Make SSViewer#process return HTMLText not string

This means that you dont have to worry about casting it
as HTMLText again when using the result in a template or other context

However in some situations code might be assuming it can
check with is_string, in which case you now need to use instanceof HTMLText
Update 3.1.0 upgrading notes for casting changes