Use binary_part/3 instead of :binary.part/3

According to @krestenkrab:

If you use erlang:binary_part/3 then the compiler will encode this
as a BIF call rather than en external call, thus not incurring the
indirection overhead imposed by potential code reloading. I have not
tried if it makes any performance difference for BEAM, but for Erjang
this means that the function is ultimately "suspendable" (we can't
see if binary:part/3 does a selective receive) which incurs overhead
in codegen.