Rework path parsing

Right now, there are two types of path parsing I want to do: either I
want parse a data path (which could possibly be one ending with a list
with no keys; this patch doesn't handle that), or, I want to parse any
path. All of the commands that can take a schema path can also take any
other type of path because a data path is just a "subset" of a schema
path. So, I changed the schema path parser to an "any path" parser.
This any path parser can then work more efficiently than a "dataPath |
schemaPath" parser: it will try to parse a data path and on the first
non-data node it will switch and continue parsing schema nodes. This has
the advantage that I don't have to do workarounds for completion. Before
this, if the parser tried to backtrack to the schema path it would
always have to clear ParserContext path and completions and do
everything again, and that would mean trouble, because I didn't really
have much control about where exactly the completions get created.
Example: the data path parser would create the completions I wanted, but
then fail. The parser would then backtrack to schema path, but it
wouldn't parse as much of the input as the other one and that would
create different completions.

There is a small caveat: I do have create my own local variables for
dataPath and schemaPath. Before this I never did have to create a
`dataPath_` or a `schemaPath_` instance. However, I think that the
control that I get over how nodes are parsed (and over the resulting
attribute of the parser) outweighs that.

Also, there was another attempt on this, which just used Spirit
backtracking. As was said before, more control over this backtracking is
better. Also, not having Spirit backtracking will hopefully allow me to
transition to new Boost version more easily.

Change-Id: I3c8a1ac2ddad83a3da6c654557b36634596a5e8d
diff --git a/src/grammars.hpp b/src/grammars.hpp
index ae7a980..74a6a17 100644
--- a/src/grammars.hpp
+++ b/src/grammars.hpp
@@ -47,7 +47,7 @@
 } const ls_options;
 
 auto const ls_def =
-    ls_::name >> *(space_separator >> ls_options) >> -(space_separator >> (dataPathListEnd | dataPath | schemaPath | (module >> "*")));
+    ls_::name >> *(space_separator >> ls_options) >> -(space_separator >> (dataPathListEnd | anyPath | (module >> "*")));
 
 auto const cd_def =
     cd_::name >> space_separator > dataPath;
@@ -132,7 +132,7 @@
     copy_::name > space_separator > copy_args;
 
 auto const describe_def =
-    describe_::name >> space_separator > (dataPathListEnd | dataPath | schemaPath);
+    describe_::name >> space_separator > (dataPathListEnd | anyPath);
 
 auto const createCommandSuggestions_def =
     x3::eps;