Support complicated edge-cases in l3doc indexing

Provide optional key-val argument for \cs, \cmd, \tn, which allows to set the
subindex in which the command should be indexed.  Get those commands to work
in bookmarks.  Improve guessing of module name.  Support one-character
commands.  Support constructions such as \cs{tl_map_\ldots} or
\cs{\meta{type}_new:N} (where the |\ldots| and the |\meta{type}| should not
be typed verbatim) while still supporting verbatim use cases \cs{foo_&:}.
Pass all of these safely through makeindex.

The next steps are to teach l3doc that |\c_sixteen| belongs to |l3int| and
to incorporate Qing Lee's suggestion of using \SortIndex.


git-svn-id: http://www.latex-project.org/svnroot/experimental/trunk@5322 de43f980-851b-0410-b2f7-c40aca1f87e0