Version 1.8.4

+ performed further refactoring of internal project structure:
  1. There is no more IReaderImpl interface.
     Its primary functions are now carried by IOProvider
     and Reader::send_command(void *,size_t,void *,size_t).
  2. From external point of view, IOProvider remains being called 'implementation'.
     for backwards compatibility. You can think of it as an io service implementation.
  3. FileImpl finally coherent with other project structure.
     For FileImpl, all packet handling and response generating is performed within IOProvider::send.
+ create_custom_packet has been refactored to return number of bytes in generated custom packet
  instead of using in/out pointer to packet_len.