Optimize seeks to end
Stream implementations in quite a few languages do not have a simple way to get a size of the stream, but allow to seek to a position relative to end of stream. This can be used to optimize clauses like `pos: _io.size - 123`. If a language supports "seeking relative to end of stream", instead of doing two (or even more) calls, we can just translate that into one `seek_from_end(-123)`.

Given that it stems from C, where `int fseek(FILE *stream, long offset, int whence)` has `whence` that allows to seek relative to end of file, it is very widely available.

This would be useful at least for:

* [C++](https://github.com/kaitai-io/kaitai_struct_cpp_stl_runtime/blob/master/kaitai/kaitaistream.cpp#L87)
* [C#](https://msdn.microsoft.com/en-us/library/system.io.filestream.seek(v=vs.110).aspx)
* [Go](https://github.com/kaitai-io/kaitai_struct_go_runtime/blob/master/kaitai/stream.go#L57)
* Lua as `file:seek("end", -offset)`, as suggested by @arekbulski 
* [Perl](http://perldoc.perl.org/functions/seek.html)
* [PHP](http://php.net/manual/en/function.fseek.php)
* [Python](https://github.com/kaitai-io/kaitai_struct_python_runtime/blob/master/kaitaistruct.py#L91) — ~turned out that Python does not support non-zero seeks relative to end of stream~ it actually does when opening the file in binary mode
* [Ruby](https://ruby-doc.org/core-2.2.2/IO.html#method-i-seek)

Probably won't be useful for:

* Java — lacks relevant seek-relative-to-end API
* JS — we do all offset arithmetic manually anyway
* ~Lua — seems to [lack API to seek *relatively* to end of file](https://www.lua.org/pil/21.3.html)~

Implementing these require 2 steps:

* Add relevant runtime API like `seek_from_end(offset)` — anyone can come up with a better name?
* Update ksc to detect and apply this optimization where possible:
  * when `pos` employs `_io.size` and `io` is default `_io`
  * when `pos` employs `some_io.size` and `io` is set to that `some_io`