#325 bookkeeping issue in reverse mapping

This PR fixes the issue as described in #325. Before merging, the reverse mappings which are either constant, ignored or expression need to be removed from the forward mapping before the forward mapping can act as a base for the reverse mappings.

Next, there was an issue in the unit tests, in which a source mapping was marked as ignore (iso the target).

Finally the enum mapping did ignore the mergeWithReverseMappings.
Hum, no, forget what I said. I think it makes sense to consider the target property as the one which is ignored.

Thinking more about it, should we make `target()` a required attribute then? I feel that'd make sense, because after all it's always a target property which you describe via `@Mapping`, be it the source (via `source()`, `expression()` or `constant()`) or other aspects of the mapping (`ignore()`, `qualifiedBy()`, `dateFormat()`).

@sjaakd, @agudian: What do you guys think?

Note that there is a backwards compatability issue here: `ignore()` and `dateFormat()` can be specified together with `source()` instead of `target()` as of today, so code doing so would break. But I'm not concerned about this, as we're still in our Beta phase and its a change which is easy to adapt to.