Initial user preferences support

Continues #761. Closes #703.