Introduce a generic operator to apply complex operations to BitVector
This avoids temporary and memcpy call when computing large expressions.
It's basically some kind of poor man's expression template, but it seems easier
to maintain to have a single generic apply call instead of the whole
expression template machinery here.
Differential Revision: https://reviews.llvm.org/D98176