exercise 4.1

Squashed commit of the following:

commit 19c680ca3c31ac4bf2a3bfd1891f3d1a862a45df
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Fri Nov 7 16:34:20 2014 +0100

    Config.no_fun: just work on function 'main', no globals

commit 35f8845946df9ea3148b7af5148178065601b425
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Fri Nov 7 16:14:33 2014 +0100

    delete solution for 4.1

commit 397bf9ba497eb74084c6f7ca3851107532fc17a7
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Thu Nov 6 18:25:18 2014 +0100

    exercise annotations

commit 1309efd47d4f2a19fbd913085865537648693f17
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Thu Nov 6 17:55:56 2014 +0100

    better names for tests

commit 624f9195840446c6b01a150032592ab7727909ec
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Thu Nov 6 11:08:49 2014 +0100

    fix t_expr (default should have been thunk...)

commit 05aa0b989ef265a03703fbd9076f69a503d9971b
Author: Peter Lammich <lammich@in.tum.de>
Date:   Thu Nov 6 07:43:49 2014 +0100

    Copy Prop. and CP-Domain

commit 32a7f940aef846e13184416a4a81f0518f929ab0
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Wed Nov 5 13:55:16 2014 +0100

    true liveness, dead assignment elimination

commit 9120311e5ed5bc0dc1e0453438bb033647662ae2
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Wed Nov 5 13:03:25 2014 +0100

    non-reachable elimination

commit 357151642b59c709bbde4e41b966d01c9509740b
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Wed Nov 5 10:51:10 2014 +0100

    don't use first class modules for transform