Factor the all_equal stuff into a separate function.
Begin work on explicit type-embedded sizes.

Still incomplete - some optimisations are disabled, and many programs
are simply type-incorrect.
Remove size() from the language.
More work on explicit sizes.
More work.  Still unfinished.
Remove tests using internal language.
Fix shape annotation additions.
Add missing case for branches in consumedInExp.
More work on explicit sizes - the end is near!
Now redomap also internalises.
Fix size annotations for filter and map.
Make copy-propagator a little size-aware.
Make type-checker aware of size annotations.
Add some more type annotations when printing.
Permit size annotations to refer to same pattern.
Size-annotation related fixes to enabling optimisations.
Size annotation-related fixes to free variable searching.
Fix 99bottles test program to not abuse reduce.
Do not generate pointless shape-if-expressions.
Fix split/concat size annotations.