Changed the way additive transforms are applied internally

Use boost::proto::flatten to get a sequence of (possibly negated) additive
transforms. Head of the sequence possibly needs initialization, and tail of the
sequence is always appended to the result.

@neapel now both negate and append are truly compile time constants, so it
should be possible to use static asserts with types that do not support
appending or negation.