don't allow array columns as primary key
implement "alter table add column"
refactor create table statement analyzer

in order to

 * share code between create table and alter table add column
 * avoid empty lists in the mapping which break merging of the mappings
add column: validate nested columns and only allow add columns on non-system tables
alter table add column fixes:

- prohibit adding a new index
- correct the synopsis
- handle adding primary key columns correctly