Minor optimization in ChoiceBuilder so that Zero() doesn't allocate a new value each time it's called.
Implemented a custom "error" operation in ChoiceBuilder but it's not currently enabled and won't be until we stop supporting F# 2.0.