Refine handling of types for struct-types

  - Added a top type for struct-types
  - Print struct-type types consistently
  - Add support for parsing struct-types
  - Allow polymorphism within a Struct-Type
Improve base types for struct-type operations
Add tests for struct-type types
Add documentation for struct-type types