Add a bunch of logging to task_loop code, don't let the scheduler queue up multiple RPCs for a single callback, don't let the rpc_queue overflow.
Ensure that each scheduled callback is called only once.

This commit makes the semantics of scheduled_rpc callbacks best-effort
in the following sense.  If the bus is locked when the callback is scheduled,
it is queued as an RPC.  If the bus is still locked the next time the callback
is scheduled to run, another RPC is not generated.  Only once the bus is unlocked
and the RPC is sent is the callback cleared to be resent.

This commit has a glaring flaw:
- there is no way to know which callback has succeeded if there is more than one.
  so the code assumes that the lowest index scheduled callback that was in progress
  succeeded.  This does not matter when there is only one callback but we should
  generalize bus_master_rpc_async to pass an argument to the callback in addition
  to the status so that we can distinguish this case and it will be generally
  useful.
Fix bug in handling queued RPCs when the bus is locked.

- Always set mib_state.rpc_done to 0 in bus_master_sendrpc even when
  the bus is not idle so that a subsequent call to bus_master_rpc_async
  will only queue the RPC and not recall bus_master_sendrpc.  This would
  result in the first RPC being discarded.

This should be the correct behavior and was the intended behavior.
There was just a bug in the placement of mib_state.rpc_done = 0.
Add debug log entry when rpc_queue is full.

This makes sure we log when such a failure occurs and we have
to drop an RPC call.
Fix scheduler RPC deduplication, expand task_manager and rpc_queue.
Merge pull request #94 from WellDone/bug-reporting-hang

Reporting hang bug