Support alternative over keys to be used as a key for fussion assoc

Adds support for parsers like:
auto key1 = lit("key1=") >> attr(key1());
auto key2 = lit("key2=") >> attr(key2());
auto value = int();
auto pair = key1|key2 >> value;

where attribute passed to pair.parse() is fusion associative sequence
Added test for parsing to fusion map with keys parsed in alternative<>
Fix for the case when fusion assoc seq is on either side of seq
Move move_to condition to template

Even if branch is never taken it still must be compiled
properly, which can cause compile errors. Moving condition
to template eliminates branching.