Properties

Use properties while keeping direct variable access when performance is important.

The same principle could be used across all the library. First discussed in #118.
There is concurrent read access (where nonatomic is fast and safe), but no concurrent set as it is only set once, or at least not concurrently set from different threads.