Improved overload procedures
New function overloading; always reduce Aurora terms

- Improved Korona function overloading. Refactored the code and
  split it into multiple functions.

- Changed Aurora terms so that the mkFoo functions in AuTerm
  always reduce the terms and check if they are well-formed.