Implement load() and load_u() using construct expressions

The new approach is much more convenient since there's no need to
specify the destination type. For example, the following just works:

int8_t* p = ...
int8<16> a = load(p);

float32<4> b = load_u(p);

This is API-breaking change.