added compile-time calculation task

it uses a syntax extension as discussed with @aochagavia in https://github.com/Hoverbear/rust-rosetta/pull/219

To take a literal as input, you could use the following piece of code:

```
let mut parser = parse::new_parser_from_tts(cx.parse_sess(), cx.cfg(), tts.to_vec());

// Try to parse a literal (doesn't need to be a number)
let literal = if parser.token != EOF {
    parser.parse_lit()
} else {
    // Handle the error
    cx.span_err(sp, "Unexpected end of file");
    return syntax::ext::base::DummyResult::any(sp);
};

// Take the number of the literal (if it is a number)
let number: u64 = match literal.node {
    LitInt(x, _) => x,
     _              => {
        cx.span_err(sp, "Invalid literal (expected unsigned integer)");
        return syntax::ext::base::DummyResult::any(sp);
    }
};

// From here on you can just use number as a normal variable
```

*Note that I haven't tested this, so it is possible that there are a couple of errors.