**Use case**

Viewing binary data such as bitmasks, hashes, internal representation of IEEE-754 numbers, etc.
Mostly for debugging.

**Describe the solution you'd like**

Similar to `hex`/`unhex`.

`bin` - returns a string with `0` and `1`. Bits are in "human" order, most significant first. Most significant zero bits are not printed (except the case with single zero).

**Describe alternatives you've considered**

Now I have to run interactive `python` from command line, but I will be more happy using ClickHouse.

**Caveats**

The name `bin` may suggest that the function will "split data into bins" but it is completely unrelated.
result_array_values_data.reserve(size * 2);
        using UnsignedType = make_unsigned_t<T>;
        for (size_t row = 0; row < size; ++row)
        {
            UnsignedType x = static_cast<UnsignedType>(vec_from[row]);
            if constexpr (is_big_int_v<UnsignedType>)
            {
                size_t position = 0;
                while (x)
                {
                    if (x & 1)
                        result_array_values_data.push_back(position);
                    x >>= 1;
                    ++position;
                }
            }
            else
            {
                while (x)
                {
                    result_array_values_data.push_back(getTrailingZeroBitsUnsafe(x));
                    x &= (x - 1);
                }
            }
            result_array_offsets_data[row] = result_array_values_data.size();
        }
        auto result_column = ColumnArray::create(std::move(result_array_values), std::move(result_array_offsets));
        return result_column;
    }
    ColumnPtr executeImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr &, size_t ) const override