http://benlo.com/esp8266/index.html#LuaLoader
It needs more testing and the error handling is probably not that robust yet, but it appears to get the job done.
I have tested it up to 20K with success.
Binary is encoded as ascii and loaded in 120 byte chunks with a checksum.
The address is also encoded in each for (sometime later) modifying a file without loading the entire contents, or recovering from serial errors by resending a block or two.
Peter