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

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

Change-Id: I5b23b8af2d2c572af97ae179761b37091bab6a85