Ingest bundles

Rather than shuffling the contents of the in moveBundleTipsToEndOfList, I think
it might be simpler and perhaps more obvious to split this function into two
and iterate over the original list twice. This keeps processTips as the canonical
place that processes the tips.

For example:

    func (cl *charmLoader) processTips(tips []lpad.BranchTip, results chan<- entityResult) {
        counter := 0
        // process all charms before bundles so that the
        // bundles will verify correctly if they refer to the charms.
        for _, tip := range tips {
             if strings.HasSuffix(tip.UniqueName, "/trunk") {
                 cl.processTip(tip, results, &counter)
            }
        }
        for _, tip := range tips {
            if strings.HasSuffix(tip.Unique, "/bundle") {
                 cl.processTip(tip, results, &counter)
            }
        }
    }

    func (cl *charmLoader) processTip(tip lpad.BranchTip, results chan<- entityResult, counter *int) {
          if *counter >= cl.Limit {
              return
          }
          *counter++
          body of tip range loop goes here
    }

Then moveBundleTipsToEndOfList can go and the code is arguable somewhat simpler.