Label structs when they are members of other structs.

Adds the type label for non-pointer struct fields.
Add explicit license name.
Detect cyclic references to prevent infinite recursion.

Prevents panics from stack overflow with a heuristic to detect cycles.
Fixed minor test error.
Merge pull request #14 from cee-dub/master

Fixed minor test error.
Use %v instead of %q

%q makes quoted strings (such as JSON strings) look really bad, and I
don't see any downsides with %v, it looks cleaner.