Simplify value/reference semantics in CTFE

In current, class, array, and AA types are called as "reference types" in CTFE code, but they're actually equivalent to pointer types, and it's quite different from the `ref` storage class.

This PR will simplify bind the "CTFE value" concept to `ctfeNeedRvalue`, and bind "CTFE reference" (lvalues that can be captured by `ref`) to `ctfeNeedLvalue`.

Additionally:
- Remove unnecessary flags `ctfeNeedAnyValue` and `ctfeNeedLvalueRef`.
- Improve any reference handling, including `this` expression.
- CTFE pointer is now represented by `AddrExp` + CTFE reference (`VarExp`, `IndexExp`, `DotVarExp`, etc).

And this PR will actually fix a CTFE reference bug:
https://issues.dlang.org/show_bug.cgi?id=13740