**Describe the solution you'd like**

We already can run clickhouse-server without configured ZooKeeper (the tables will start in read-only mode)
and with configured ZooKeeper, if it starts to be inaccessible at runtime (the tables will be read-only until the session is re-established).

Let's also make it possible to start up when ZooKeeper is unavailable.

**Additional context**

If that will be very hard to implement, we can consider other options:
- lazy attaching of the tables after sever start-up;
- a maintenance mode when the tables are not attached at start-up and require manual ATTACH queries.
M(72, CANNOT_PARSE_NUMBER) \
    M(73, UNKNOWN_FORMAT) \
    M(74, CANNOT_READ_FROM_FILE_DESCRIPTOR) \
    M(75, CANNOT_WRITE_TO_FILE_DESCRIPTOR) \
    M(76, CANNOT_OPEN_FILE) \
    M(77, CANNOT_CLOSE_FILE) \
    M(78, UNKNOWN_TYPE_OF_QUERY) \
    M(79, INCORRECT_FILE_NAME) \
    M(80, INCORRECT_QUERY) \
    M(81, UNKNOWN_DATABASE) \
    M(82, DATABASE_ALREADY_EXISTS) \
    M(83, DIRECTORY_DOESNT_EXIST) \
    M(84, DIRECTORY_ALREADY_EXISTS) \
    M(85, FORMAT_IS_NOT_SUITABLE_FOR_INPUT) \
    M(86, RECEIVED_ERROR_FROM_REMOTE_IO_SERVER) \
    M(87, CANNOT_SEEK_THROUGH_FILE) \
    M(88, CANNOT_TRUNCATE_FILE) \
    M(89, UNKNOWN_COMPRESSION_METHOD) \
    M(90, EMPTY_LIST_OF_COLUMNS_PASSED) \
    M(91, SIZES_OF_MARKS_FILES_ARE_INCONSISTENT) \
    M(92, EMPTY_DATA_PASSED) \
    M(93, UNKNOWN_AGGREGATED_DATA_VARIANT) \
    M(94, CANNOT_MERGE_DIFFERENT_AGGREGATED_DATA_VARIANTS) \
    M(95, CANNOT_READ_FROM_SOCKET) \
    M(96, CANNOT_WRITE_TO_SOCKET) \
    M(97, CANNOT_READ_ALL_DATA_FROM_CHUNKED_INPUT) \
    M(98, CANNOT_WRITE_TO_EMPTY_BLOCK_OUTPUT_STREAM) \
    M(99, UNKNOWN_PACKET_FROM_CLIENT) \
    M(100, UNKNOWN_PACKET_FROM_SERVER) \
    M(101, UNEXPECTED_PACKET_FROM_CLIENT) \