Add options for a blocking read and for setting the max blocking time for a read.
Add usage function instead of using usage_message.