re: #183/assembla - item specific categories throws an exception

when in step 2 of the upload process, if an item specific category is added that uses a metadata field that has not been used in the metadata mapping, the application will throw an exception because the metadata field is not in Mapping->target_dom_elements_mapped.

the solution implemented was to create an array that contains all first level elements of the metadata record instead of only the targeted dom elements based on the metadata mapping. a Metadata and MetadataPhpAdapter class were created that provide current use, storage and retrieval of the new metadata array, and a place for future use, e.g., using ContentHandler to store and retrieve metadata snippets

an issue with wikitext category generation was also corrected. the application was hard coding the namespace name as Category: and not stripping out [] that might be in the metadata. created \GWToolset\getNamespaceName() and \GWToolset\stripIllegalCategoryChars() to handle these issues.

a few clean-up and cosmetic issues spotted in the affected files while working on these issues were also addressed.

* GWToolset.i18n.php
  ** got rid of bold around the gwtoolset-developer-issue key

* includes/Config.php
  ** added $autoloader_classes
  ** removed outdated $autoloader_classes
  ** updated the version

* includes/Adapters/Php/MedtadataPhpAdapter.php
  ** added file

* includes/Forms/MetadataDetectForm.php
  ** changed the way the namespace name is found

* includes/Handlers/Forms/MetadataDetectHandler.php
  ** added line breaks to code that is > 100 characters
  ** removed unused use namespace FSFile

* includes/Handlers/Forms/MetadataMappingHandler.php
  ** added in use of the new Metadata class
  ** re-factored processMatchingElement() so that it incorporates the new Metadata class and uses an $options array instead of individual parameters

* includes/UploadHandler.php
  ** added in use of the new Metadata class
  ** re-factored wikitext category generation so that it uses \GWToolset\getNamespaceName() and \GWToolset\stripIllegalCategoryChars()
  ** removed getMappedField() and and used Metadata->getConcatenatedField() instead for getting item specific category values
  ** made a few @param types consistent with the rest of the application
  ** removed @return {void}s
  ** re-factored saveMediafileViaJob() so that it incorporates the new Metadata class and uses an $options array instead of individual parameters

* includes/Handlers/Xml/XmlMappingHandler.php
  ** added getDOMElementAsArray() and addDOMElementToArray() to create the array version of the metadata to be used in the Metadata class

* includes/Jobs/UploadMediafileJob.php
  ** added in use of the new Metadata class
  ** adjusted validateParams() to the new $options array provided by saveMediaFileViaJob()

* includes/Models/Mapping.php
  ** added in use of \GWToolset\getNamespaceName()

* includes/Models/Medtadata.php
  ** added file

* includes/functions/functions.php
  ** added getNamespaceName()
  ** added stripIllegalCategoryChars()
  ** adjusted spacing in a comment
  ** made a few @param types consistent with the rest of the application
  ** handleError() altered the comment and changed ErrorException to MWException

Change-Id: Id11491a04aa9707e336aca2146f1635177849724