re-arrange RegisterBlock logic. finish impl DataCopier.
Add data copier test
rename data copier to data brancher