Use everything but the last token for the app name. For example, some FMS servers (like EdgeCast) have an app name that is something like: "20C78D/live".

Likewise, take the last token and use it plus the query string for the play path. For example, some FMS servers (like EdgeCast) use token authentication. Something like: "stream01?password01&adbe-live-event=event01".
PixelBuffers must be locked _before_ you get the base address for them.
Rewrote FSM to get things working on EdgeCast.
Added command tracking and status code parsing. Things still work on EdgeCast.
Things now seem to work on EdgeCast, Wowza, and nginx-rtmp-module.

To make things work, I had to keep track of the command that was sent for each
packet ids. That way, when the server calls does a _result() invoke, we can see which state we are in. This is more reliable than the assumptions made with the simplistic FSA implementation that existed before.

Furthermore, we needed to handle the _onStatus() invoke properly, to ensure
that we don't start streaming before the server tells us
"NetStream.Publish.Start".
Merge remote-tracking branch 'upstream/master' into edgecast-fixes.

Conflicts:
	rtmp/RTMPSession.cpp
Merge pull request #10 from givingstage/edgecast-fixes

Things now seem to work on EdgeCast, Wowza, and nginx-rtmp-module.