generalised copy directives to include field value mappings +
refactoring (see details)

- renamed ExcludeDirective into Exclusion
- added Mapping callbacks
- removed Excludes in favour or Directives, a DSL
- added Mapping for conversion toString
- refactored Dynamic and Type to work with Directives