Add result<T> type (issue #13)

Unittests and documentation are still required, as well as a few extra
bits of logic to make sure that a result<T> is never initialized with an
error_condition with a value of 0.