[RDY] clipboard: support separate +/* clipboards, linewise copy/paste and add test

This change allows clipboard provider to distinguish between `+` and `*` registers, by passing an extra parameter to clipboard_get/set. 

Existing behaviour can be preserved by just igoring the extra parameter like [this](https://gist.github.com/bfredl/19c13ba8014bb761528c). An example provider for X11 that distinguishes between "primary selection" and clipboard (like in vim +x11) is [here](https://gist.github.com/bfredl/888e2b7c2b378d6953ee)

An open question is what to do when `unnamedclip` is set; right now it uses the name `+` (because it was easiest to implement and consistent with existing code). An alternative would be to pass the name `"` to the provider when the unnamed register is used (so it could choose between `+`/`*` itself, or implemnt a third option). In this case, and if I understand the code correctly, `adjust_clipboard_register` could be be completely removed? @tarruda

While breaking the API, something to consider is to let the provider get/set the regtype (character or linewise selection) by passing another parameter. I suppose this could be done by just doing `vim.command("call getregtype(...)")` from the provider, but IMHO it would be cleaner if this was actually part of the api. I will try to implement this later.
These are good tests. Should we also test `setreg()` and `getreg()`?

- `getreg('+', 1, 0)` should return NUL *and* newlines as newlines
- `getreg('+', 1, 1)` should return NUL as newlines, and newlines as separate list items
- `setreg('+', "foo", 'c')`, then `"+p` should paste "foo" characterwise (into the current line without adding a new line)
- `setreg('+', "foo", 'l')`, then `"+p` should paste "foo" linewise (creates a new line containing only "foo")
- `setreg('+', "foo\nbar", 'b')`, then `"+p` should paste "foo\nbar" blockwise 
- I think `setreg()` also accepts a list, but currently the builds I have don't seem to like it.

Note: it may be convenient to know that you can change the register type without changing its contents, by appending an empty string. E.g., to change the type to "linewise", use "al" (the "a" flag means "append"):

    :call setreg('+', '', 'al')