API improvement (#22)

1. Separate different commands as independent case classes

2. Wrap nested commands with an intermediate object

    `ScriptLoad`, `ScriptSave` issues `SCRIPT LOAD`, `SCRIPT SAVE`.
    Reflecting this pattern, introduce following structure:

    ```scala
    object Script {
        case class Load()
        case class Save()
    }
    ```

3. Make `EVAL` always expect `LIST` and remove `EvalMulti~` commands

4. `GetType` to `Type` to match underlying Redis command

    Provide escaped `type` and `tpe` for as lowercase API methods

5. Require `Seq` for repeated arguments as default and provide auxiliary
constructors

6. Change `~withScore` to `~withScores` to sync with corresponding Redis
option