Fix belongs_to preload if no associated record exists

Closes #287.
Do not restrict limit and offset are to a single int

References: #270
Validate limit expression as integer
Validate offset expression as integer
Extract common code for expr type validation
Makes ^ operator available in limit/offset

This now works

```elixir
elixir_value = 5
query = from p in Post,
  select: p,
  limit: ^elixir_value + 3
```
Compiles vars in lim/off but does not validate
Removes unused code
Refactor forbid_variables