Various changes and improvements, mostly internal.

Main Changes:
- Removed es_null_ref
- StringRefs now always have a valid pointer, even when set to size 0 or
passed a null pointer through es_temp
- es_append now at least doubles the string's allocation size, if a
reallocation is necessary.

Implementation changes:
- autoalloc now accepts a hint size, for allocation > size + 1. This is
intended to support the smarter behavior for es_append
- Now using stdbool in various places, for clarity
- Removed unnecessary assignments to es_empty_string. These were made
unnecessary by past improvements to autoalloc
- Fixed cases where strlen(0) was being called
- Improved es_toul's overflow checking
- Added initial error check to es_readline
- Various minor syntax changes and comment additions throughout