**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(102, UNEXPECTED_PACKET_FROM_SERVER) \
    M(103, RECEIVED_DATA_FOR_WRONG_QUERY_ID) \
    M(104, TOO_SMALL_BUFFER_SIZE) \
    M(105, CANNOT_READ_HISTORY) \
    M(106, CANNOT_APPEND_HISTORY) \
    M(107, FILE_DOESNT_EXIST) \
    M(108, NO_DATA_TO_INSERT) \
    M(109, CANNOT_BLOCK_SIGNAL) \
    M(110, CANNOT_UNBLOCK_SIGNAL) \
    M(111, CANNOT_MANIPULATE_SIGSET) \
    M(112, CANNOT_WAIT_FOR_SIGNAL) \
    M(113, THERE_IS_NO_SESSION) \
    M(114, CANNOT_CLOCK_GETTIME) \
    M(115, UNKNOWN_SETTING) \
    M(116, THERE_IS_NO_DEFAULT_VALUE) \
    M(117, INCORRECT_DATA) \
    M(119, ENGINE_REQUIRED) \
    M(120, CANNOT_INSERT_VALUE_OF_DIFFERENT_SIZE_INTO_TUPLE) \
    M(121, UNSUPPORTED_JOIN_KEYS) \
    M(122, INCOMPATIBLE_COLUMNS) \
    M(123, UNKNOWN_TYPE_OF_AST_NODE) \
    M(124, INCORRECT_ELEMENT_OF_SET) \
    M(125, INCORRECT_RESULT_OF_SCALAR_SUBQUERY) \
    M(126, CANNOT_GET_RETURN_TYPE) \
    M(127, ILLEGAL_INDEX) \
    M(128, TOO_LARGE_ARRAY_SIZE) \
    M(129, FUNCTION_IS_SPECIAL) \
    M(130, CANNOT_READ_ARRAY_FROM_TEXT) \
    M(131, TOO_LARGE_STRING_SIZE) \
    M(133, AGGREGATE_FUNCTION_DOESNT_ALLOW_PARAMETERS) \