* export the checker and ensure no methods or fields are exported
* make Checker reusable
* add PatchAndCheck method to Checker, and reuse it in visitors
* avoid unnecessary map and consolidate structs
* make all Nature methods use pointer-receiver
* added cache for type and nature information
* optimize type and nature checks
* more aggressively cache some partial results and add cheap checks
* cache reused values
* reduce copying in Nature by breaking down optional fields
* enforce use of cache
* improve ergonomics of FromType and NatureOf
* improve struct method fetching
* make cache private to Nature
* first iteration improving struct reflect caching
* cleaned up struct fields data
* improve caching of functions data
* simplify checker code
* simplify and remove dead code
* add checker benchmarks
* address PR comments and minor improvements
* rename from SetCache to Bind
* make the benchmarks more fair
* fix benchmark option not being applied
* move Cache to be argument instead of field
* merge FuncData into Optional
* rename Optional to TypeData
* simplify struct logic
* cache builtin numeric types
---------
Co-authored-by: Anton Medvedev <[email protected]>