solution for exercise 9.2
Squashed commit of the following:

commit a34acb6c23c568f8ca6c407bf5ac6503aaaae4ed
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Fri Dec 12 17:28:15 2014 +0100

    just use one register per function for return values

commit aa12147d469a0cc301f07a38861ec92fd9cfe7e9
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Fri Dec 12 17:03:53 2014 +0100

    tail call optimization

commit 9293e0c86ad192a48d730e30e0f9d5a95999bd11
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Fri Dec 12 13:54:32 2014 +0100

    delete old Predominators WIP. we use GenFramework for this now

commit dbe923abab8bb30990d3ff0c74b7046af117dcc5
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Fri Dec 12 13:36:16 2014 +0100

    locality fin

commit d11ee75e60016980f2b478b187765a30e9d36f3a
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Fri Dec 12 12:52:51 2014 +0100

    locality WIP

commit e1fe2da8ad644264ed60291370aa5b4bef7e6ba6
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Thu Dec 11 18:26:33 2014 +0100

    locality WIP

commit 05a01ec21e31ad7a52b42f52b17c013b742e0041
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Thu Dec 11 15:22:24 2014 +0100

    Var of string -> Var of locality option * string

commit 9f29b55adff4ae46faa8ceda626246a1bcb62885
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Thu Dec 11 09:32:47 2014 +0100

    don't need GADTs

commit c06c8c2c889c1adc21e4f0aaa3f084b565c50e01
Author: Peter Lammich <lammich@in.tum.de>
Date:   Wed Dec 10 20:12:00 2014 +0100

    Started locality of variables