API Allow for different merge strategies in config

Added ability to provide custom classes for handling the 'merge' of yaml config
fragments other than the default 'merge' strategy

Reimplemented merge_array_high_into_low so that it doesn't perform the swapping
of src and dest arrays when merging values, in such a way that it obeys
correct ordering of element arrays as required.

Added assertions for ConfigManifestTest

Updated configuration docs

Fixed issue where merges of high_into_low wouldn't maintain the 'high' array's
key order when merged into the lower array - the keys would be swapped in order
so an associative array_splice was used to continually splice the associative
data into place.

Keep merge strategy management in the ConfigManifest
as they're only applicable to yaml configuration, and removed the rules
from merge_low_into_high as they're not applicable for this either.