Add simple typing to untyped ML implementation

Changes from TAPL Ch 8 -> Ch 10.
Fourth parameter for abstraction terms