[RFC] api: window_set_cursor doesn't always update position.

When setting cursor position using api, visible range is only updated (if needed) if window is the current one. To reproduce,
open nvim with two (+100 lines ) files.
```
NEOVIM_LISTEN_ADDRESS=/tmp/neovim nvim -o file1 file2
```

And in a Python shell run
```
# to setup
v = neovim.connect("/tmp/neovim")
w1, w2 = v.windows
v.current.window = w1
w1.cursor = [1,0]
v.current.window = w2

# and then
w1.cursor = [100,0]
```
the last line will not cause the upper window to scroll, so line 100 remains invisible.

This seems to be the simplest fix. Not that I really like the curwin change workaround, but it was already used for set_height below (and a lot of vim's windowing/drawing code seems to assume the current window...)

Similar issue: `buf.options['ft'] = 'python'` doesn't work for non-current buffer `buf`, `&ft` does change but no changes in syntax highlighting etc are triggered.
[Error on travis](https://travis-ci.org/neovim/neovim/jobs/29882905):
```
/home/travis/build/neovim/neovim/src/nvim/api/window.c:86:3: error: implicit
      declaration of function 'update_topline' is invalid in C99
      [-Werror,-Wimplicit-function-declaration]
  update_topline();
```

Requires `"nvim/move.h"`.