Work on reader input, should be done writting the core code for the
reader, there are still probably a ton of errors though

I do input mostly generically using a struct read_input which is just an
opaque input source of some kind and an int that identifies the type of
that source. I have functions read_char, unread_char, peek_char,
read_line, read_string, and skip_line that take a read_input pointer and
do the obvious action.

I split what I had in cread into several files, cread.h for functions
exported from the reader (functions to read from different sources, to
cread read_input pointes and read from read_input pointers, etc...)
read_input.h which is a bunch of macros and small static functions and
implements the different functions on read_input by using arrays  of
function pointers which are indexed into by the type field of the
read_index.
and finaly read_aux which contains a bunch of auxiliary macros used in
the reader. I also removed all the cord input stuff from the
cord_macros.h file and added a #include "ec.h" to cord.h so I only have
to include one file for cords