recoco: Add ability for BlockingOperations to not give up control

This has been one of those obvious good ideas which just never got
implemented until now.  This allows a BlockingOperation's execute() to
return True, which means that the scheduler shouldn't cycle, but the
same task should just be executed again.  There are a number of places
where this might be used in the existing code (where instead it just calls
fast_schedule again on the same task).
recoco: Add Lock

This is a Lock with fairly Pythonic semantics.  It can serve as a
demonstration for implementing other synchronization primitives (e.g.,
conditions).
boot: Reuse existing core object if any

This is to allow for externally created core objects to be reused rather
than trying to create a new one (for embedding POX).