Additional Javadoc
Refactor isSubsort into syntactic and semantic check.

The previous Production.isSubsort method would consider
also productions with an explicit label to be subsort productions.

This commit renames isSubsort to isSyntacticSubsort, and
extracts the then-common pattern
  (prod.isSyntacticSubsort() && prog.getKLabel() == null)
to a new Production.isSubsort method.
A few other calls were changed from isSyntacticSubsort to isSubsort
when a local change could preserve the exact behaviour.
Change isSyntacticSubsort to isSubsort other places

Changes isSyntacticSubsort to isSubsort in places
where it is not a pure refactoring but the semantic
version of the subsort check seems more appropriate.
Fix empty lists under cells and rewrites

The AddEmptyLists visitor was only wrapping items into
single-element lists if they appeared as arguments to a TermCons,
but cells and rewrites are also contexts that can demand a list.
Split semantic and syntactic subsort in Context

The subsorts member of Context was populated and used extensively
by the parser to represent the syntactic relation of a term of
one sort being legal in the concrete syntax where one of the other
is expected. In particular, this considers list elements subsorts
of the list type, and a production consisting of a single nonterminal
produced a subsort relationship whether or not it was labeled.

Unfortunately, other passes used this information from the context
as if it was the semantic subsorting relationship.
This commit splits the subsort information in Context into a syntactic
and semantic relation with independent accessors, changes
CollectSubsortsVisitor to populate both, and calls the appropriate
version in various places.
Merge pull request #944 from kframework/subsort-fixes

Subsort fixes