pass the 'cmd' function into ciManagement

this lets us pass an arbitrary function to be executed and managed
in the style of the chef-client:
- only runs when in ZI is connected
- same operation every time
- barf, still need to make the wait a parameter
added some bits for the promote job; made the sleep a parameter
add jenkins lib, incomplete

added the jenkins promote job library.  this will handle interactions
with the promotion process.  its polling type will probably change
in the future so best to encapsulate that as much as possible

ToDo:
- add negative tests for Start()
- write Wait()
- tests for Wait()
- integration tests for lib inside zi-relay.go
negative test for Start, its done now
intermediate commit, machine getting flaky
tests complete and functional

added guard for Wait now only runs if Start has been run.  and a
whole bunch of tests.  hurrah.
clean up tests, able to stop monitor goroutine

renames the sleep scripts
cleans up some timing issues in the tests
removed jenkins subdir, that's a go anti-pattern
bump sleep time from 1 second to 25 minutes for promote job

this job takes 5-6 minutes each time.  if we leave the delay at 1
second there will be an infinite number of jobs as all of the infras
queue them up faster then they go out.
feed all async; added resp/req status chans; timing in _test

its an async read for feed in shovel management
added req/resp channels so we don't have infinite loops being horrible
hardened the timing checks in zi-relay_test to be configurable.  I
  don't know why the loops are getting out sync (off by one sleep
  period) they are the same.  but whatever, I give up.  this is fine
  until BT-550 comes up
Merge pull request #6 from coffeepac/run-jenkins-promote

Run jenkins promote