Initial import.
Initial import.
Reimporting asyncoro.html
Misc cleanups.
Added _await_ and _proceed_ methods for internal use of suspend/resume.
This is to prevent user programs from inadvertantly resuming coros that
are waiting on asynchronous operation.

Misc cleanups.
For convenience (for now, anyway), moving asyncoro for Python 3 to
master branch from separate branch (py3).
Fixed KQueue notifier's control call (forgot to pass 0 as second argument).
Added support for full duplex communication by having separate read and write variables per
socket.

Misc cleanups.
Docuentation updates and misc fixes (from dispy project).
Documentation updates and renamed asyncoro.html to index.html.
In locking primitives handle non-blocking request outside of loop.
Documentation updates.
Made AsynCoro take notifier as parameter for initialization. With this AsyncNotifier
can be replaced with another notifier, or it can be chained with other notifier(s).
Resume can now be asynchronous: If target coro is currently not
sleeping/suspended, resume value ('update' argument) is queued
so that target coro receives the update when it next calls sleep/suspend.
With this suspend/resume can be viewed as send/receive to exchange
messages (although, it may be better to use Python's deque etc., for
implementing producer/consumer instead). Accordingly, added aliases
for sleep and resume to receive and send.

Added support for hot swapping of generator function of coro. A coro
must first indicate that it is setup for hot swapping with the function
hot_swappable. hot_swappable can be used to toggle readiness, if necessary.
The function hot_swap can be used to replace current generator with new
generator. AsynCoro then sends HotSwap exception whenever a) coro currently
is ready for hot_swap (i.e., called hot_swappable with True), b) it is
currently executing at top-level (i.e., has not called other generator
functions) and c) not processing exceptions. The coro can inspect new
generator, if necessary, and can do any preparation for hot swapping,
e.g., saving state. Then it must re-raise the same exception, which causes
AsynCoro to replace the generator and starts executing it. Any resumes
queued in the previous generator are not reset, so new generator can
process pending/queued resumes.
Resume can now be asynchronous: If target coro is currently not
sleeping/suspended, resume value ('update' argument) is queued
so that target coro receives the update when it next calls sleep/suspend.
With this suspend/resume can be viewed as send/receive to exchange
messages (although, it may be better to use Python's deque etc., for
implementing producer/consumer instead). Accordingly, added aliases
for sleep and resume to receive and send.

Added support for hot swapping of generator function of coro. A coro
must first indicate that it is setup for hot swapping with the function
hot_swappable. hot_swappable can be used to toggle readiness, if necessary.
The function hot_swap can be used to replace current generator with new
generator. AsynCoro then sends HotSwap exception whenever a) coro currently
is ready for hot_swap (i.e., called hot_swappable with True), b) it is
currently executing at top-level (i.e., has not called other generator
functions) and c) not processing exceptions. The coro can inspect new
generator, if necessary, and can do any preparation for hot swapping,
e.g., saving state. Then it must re-raise the same exception, which causes
AsynCoro to replace the generator and starts executing it. Any resumes
queued in the previous generator are not reset, so new generator can
process pending/queued resumes.
If timeout=0 in suspend, return alarm_value without suspending.

When replacing new generator, close old generator.

Send HotSwap exception only if coro is in Scheduled or Suspended state.
Documentation updates.
In SelectNotifier, set both read and write flags if socket is ready for both.

Misc tweaks.
In recvall, first recv may receive data, which updates 'view'. So set read_task
after processing first recv.
Updated documentation.