Use Psr\Log\InvalidArgumentException for an invalid level

Check if level is available, acceptable levels are the strings
defined in `Psr\Log\LogLevel` as well as the int constants
defined in `Log`.

Now that int is an acceptable, I have removed the int-to-string
level conversion from `Log::add`
Cast $message argument to string in compliance with PSR-3
Adds usage examples to Log::log and minor fixes to docs