Restructuring drift / bound classes, and splitting into multiple files

The bounds were separated into single bounds and bound pairs that combine
single bounds.

The implementation was brought in line with the usual Julia module structure,
with one module file that collects the class defitions and methods, which
by themselves are spread over multiple files.