Bubble execution errors instead of printing to stderr directly
Begin the transition to error types to make it easier for library users to detect error programmatically.
Warning: this assumes in some places that it is safe to break the flow from the point of view of memory. While I think no problem should arise, it may be wise to take special care for this during the review.