#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.
Makes sense to me too! :+1: 

By the way: I created the `Map<String, List<Mapping>>` as one of my first MapStruct feats. I think its still holds, but I don't feel particular happy with having source as the key. However, the other way around does not work either (you get problems when target is the key). Perhaps it should not be a `Map` but a `Set` with a good equals method in the `Mapping`.