Fix .gitignore to not ignore the carp directory under examples
Add a test-case without a `main:` label to trigger a segfault

The segfault happens in carp_vm_make() due a NULL pointer dereference
of `res`.

This also adds a directory called `fuzz` which isn't very well named,
but maybe one day we can start fuzz-testing Carp. Until then, we can
use this directory to hold use cases that break Carp, and one day a
test-suite that makes sure each commit doesn't break any of them.
Clean up file_read() and avoid a full memset() of contents
file_read(): improvements and better error messages
carp_lex_tokenize(): fix a memory leak

In the case the file is 0 bytes, we still allocate an extra byte for
NULL termination. This fixes a leak at exit where that 1 byte buffer
isn't freed.
Cleanup carp_vm_make() in preparation to fix segfault
Better error message in carp_lex_tokenize()
This test triggers memory errors in Valgrind

- 4 missing deallocations at exit
- 2 invalid memory reads
fix merge conflict
fix style violations