Make strings with use flags explicit
Make strings with use flags explicit

The CAPI2 documentation referred to the String type, which was
documented as always supporting use flags, i.e. all strings were
documented to be parsed. That's actually not the case. Supporting parsed
strings everywhere will make refactorings much harder, so this commit is
intending to keep the status quo instead of making use flags available
in more circumstances.

This commit introduces new data types, which also appear in the CAPI2
documentation, for strings which support use flags and which are parsed
as such when being used. The normal `String` type is now an unparsed
string, the new `StringWithUseFlags` is a parsed string.

Even though I hope to have caught all cases where a string is parsed in
the source code, I'm not 100% sure of that (mainly if the test suite has
coverage holes). To capture those cases in the field we throw an
exception in the hope that users report this behavior.

olofk/fusesoc,lowRISC/fusesoc,lowRISC/fusesoc,olofk/fusesoc