Events in variables (WIP; tests passing)

- Fix _lower_bound
- Prevent negative intervals in _prepare
- Get with interval 0 returns 1 value only if out of range or if there
is a data point at the requested time.
- Get should always return at least one value as long as there is data
in the variable.
- Fix calls to _get
- Move _at into a function, don't interpolate if _get only returns one
data point.
- Variable change event is fired after _value is updated, so that
dependent expressions will update correctly.
- Change and and or to & and |. Need to implement real and and or
methods.
- Fix this <-> self typos.