ca-table.h: Remove declaration of unused struct ca_data

This struct was previously used to hold "any value".  No such functionality
remains.

Signed-off-by: Morten Hustveit <morten.hustveit@gmail.com>
table-backe-writeonce.c: Make CA_wo_seek_to_key seek to first occurence

Previously, this function would seek to any instance of the requested key.
It's now been changed to work more like std::lower_bound, moving to the first
item in the case of multiple matches.  This works even if the list is sorted in
reverse.

Signed-off-by: Morten Hustveit <morten.hustveit@gmail.com>
hashmap.c: Provide an error message when inserting duplicate keys

Previously, the error response was setting errno to EEXIST.

Signed-off-by: Morten Hustveit <morten.hustveit@gmail.com>
Store schema using traditional types rather than an on-disk C struct

  * This ensures compliance with Codd's rule 1.

  * The schema had to be split into two tables: ca_catalog.ca_tables and
    ca_catalog.ca_columns.

  * A boolean type was added to represent NULL/NOT NULL and
    PRIMARY KEY.

  * The schema parsing and storage code became considerably more
    complex.

  * The functionality of CA_select/format_output was extended to allow
    inspecting the new table format, in particular support for column counts
    other than 2.

  * The ca_table_write_table_declaration and ca_data_parse_table_declaration
    functions were no longer needed.

Signed-off-by: Morten Hustveit <morten.hustveit@gmail.com>