Added the code generator for MPDE

And as a bonus, a small DSL for integer addition, printing and returning.

Quoting from `dsls/vector/src/dsl/print/package.scala`:
```
// Staging workflow:
//
//     program code (block) ==> lifted code ==> staged code ==> parsed trees
//
// if there are external dependencies, like in:
//
// val x = 3
// liftPrint { print(x + 4) }
//
// the code can't be evaluated and thus we can only place the lifted code
// back in the program and expect to perform interpretation at runtime*
```
*putting the lifted code back can be done after partial evaluation