Now these macro helpers take in account the possibility of typedefing one type to another, and correctly find the one intended
Implement pub support for enums, and also anonymous enums declared in-place. Also give the cdr of a `pub' form the form's own location, so a error about what follows `pub' can say where it was written
1. register imported types 2. protect against multiple imports (diamond, circular)
Also fix module import