Lots of refactoring

- move the login off into another binary
- add an explicit --type argument to basis-band
- have basis-band.rb use a default ApiFetch, but allow for passing in
  an alternative interface for testing
- don't store userid and token in BasisBand object since they're used
  in only one place, just pass into needed methods
- make the cache directory the argument at instantiation for BasisBand