Sort out the num dictionary business.  Now start adding the primitives in bulk.

This commit required upstream changes, namely commit d30d758319d9bd81e in the Accelerate repository.
Add more prims and finish constants
Handle scalar-tuple types.
Eliminate non-exhaustive pattern matches except for the two big ones: prims and exp constructs
Put in some more errors and handle scalar 2-tuples as a proof of concept
WIP: working on scalar tuple expressions
WIP: attempt a general handling of tuples.  Didnt make it.
Add a huge pile of garbage copy-pasted code to handle tuple sizes 2-9.
Add bool prims
Refactor: mapD is its own function
WIP: getting ready to put in pesky float->int operations
Handle the first couple of the heterogeneous prims.  Not abstracted yet.
Factor out the code for heterogeneous prims
minor: clean out a bit of cruft