libsmbclient: more cleanup work, documentation, slight API changes

Hi Eduardo, here's some more cleanup work. Could you consider merging this? In summary:

* Fixed some compiler warnings;
* Improved the way errors are handled when `zend_parse_parameters` fails: the proper documented way is to just call `return`;
* The length parameter in `smbclient_write` is now optional and defaults to the length of the data. This is the same interface that the native `fwrite` uses.
* `smbclient_open` now uses the same interface as the native `fopen`and takes a one or two character mode string. Previously, files were always opened read-write, now there's a choice.
* the `EBUSY` error was not handled by `smbclient_unlink`, but was found to occur during testing, so I added it;
* Documentation! I changed the README to markdown syntax and added descriptions of all userland functions. In my opinion, good documentation for the end user is essential for a project like this to get picked up.

Because the userland API changed, it might be a good idea to bump the version number, what do you think?