Add a Rust ctags generator.

Thanks to Colomban Wendling for reviewing and finding and fixing many issues.
rust: Don't use fileEOF() as it behaves unexpectedly

fileEOF() actually returns TRUE anywhere after the last newline when
using the file*() API, which includes a last line without newline.
This is an implementation detail which makes this function not usable
with the rest of the file*() API.  fileEOF() should actually probably
be called iFileEOF(), but that's outside the scope of this parser.

However, even if fileEOF() did work properly with fileGetc(), the very
last byte in the input would have been omitted because we actually
read ahead by one byte, which means the actual read reaches EOF one
byte before our "current byte" does.

Checking whether we reached EOF by checking whether our current byte
isn't equal to `EOF` fixes it, and isn't worse since it's actually how
fileEOF() is implemented anyway.
Added the Rust filetype
Import the Rust lexer from Scintilla
Update Rust Scintilla lexer to Scintilla revision 4946:4d9978010c3a
Update our Scintilla patch for the addition of Rust lexer
Use :: as the context separator for Rust
Integrate the Rust lexer with the rest of Geany's functionality
Add shebang filetype detection for Rust
Add Rust ctag tests
Add Rust tests to the makefile
Clean up Rust ctag tests and make them more comprehensive
Merge branch 'SiegeLord/rust'

Closes PR#181.
Update NEWS for Rust filetype