parse the return descriptions as markdown
recurse with processMetadata for properties of the metadata
defer resolving the annotated object.

by resolving this in the exporter, we can avoid a race condtion where
sometimes relatedModule had not been indicated when it should have been.
add raw property to hold unparsed metadata
it's possible that return types might reference annotated objects
prevent property metadata overriding value metadata

this makes a property's metadata independent of the value's metadata.

fixes #61
split core declare() processing to independent function,
and add handler for dojox/drawing/util/oo::declare()
Support nested lists.

Rather than indiscriminately trimming whitespace from key values,
measure the indent on the first line of text and use that as a baseline.

For example, notice that the first line of text after a summary: keyword is indented by
two tabs, and then if three-tab text is encountered, we know it's a nested list or
a code block.
Proper tab --> space conversion.

Instead of converting every tab to four spaces, just add spaces until you get to the next tabstop.
I really only want to do this on dojo comment blocks, but not sure how to intercept comment blocks
before esprima removes the // comment characters and whitespace preceding them.

Surprisingly though converting all code is fast: my build time when from 1m 8s --> 1m 11s,
basically the same.
Fix showing code blocks.

Do conversion of vertical-bar code blocks to standard markdown syntax before calling markdown processor, and handle code block indentation similarly to how nested lists are handled, so that unwanted indentation (plus of course the vertical bar) are removed, but indentation that is part of the actual code example is preserved.
treat return description as markdown
fix parsing of tags
prototype to export JSON rather than XML
function parameters and object properties can have multiple types
rename new exporter to "dapi"
export events separately from (normal) methods
sort properties, methods, and events
output tags as array rather than string like "private deprecated"
copy neonstalwart's changes to dojov1.js in 6424818 into dapi.js
exclude non-AMD modules