jinterface: don't need another FilterOutputStream wrapper

DeflaterOutputStream is already an FilterOutputStream
jinterface: fix typo in error message if encoding fails
jinterface, OtpOutputStream: properly override the three write() methods to ensure our growth strategy

Previously, if code called e.g. write(byte[] b, int off, int len), the growth strategy of the parent class ByteArrayOutputStream was used.
jinterface: don't compress small erlang terms < 5 bytes

Compression always has at least 5 bytes (the compressed tag + original size) so we can't get a smaller external term if the original term is already smaller than 5 bytes.
jinterface: don't return compressed external term if bigger than uncompressed

Now, OtpOutputStream#write_compressed() uses the same mechanism as erts_term_to_binary() in external.c: it tries to compress the given term into a buffer of the size of the uncompressed term and if this is not possible, i.e. the compression plus headers is bigger, it uses the uncompressed external term format instead.
jinterface: new limited OutputStream implementation without the need to resize

(saves memory re-allocations)
jinterface: fix a memory leak

after the first try to compress the value with a fixed buffer size, the deflater must be closed so that memory can be (instantly) reused
jinterface, OtpOutputStream: add a write_compressed(object, level) method

Now that we use an own deflater, we can also allow the user to specify the compression level as in Erlang's term_to_binary/2.
float_to_list/2 changed rounding and cosmetic cleanup

Changed rouding to round half-way up instead of down.
Cosmetic cleanup and error handling of additional edge cases.
erts: Refactor mseg cache

Use double ended cache queues to evict oldest cache first
erts: Evict old cached segments for newer ones
erts: Increase default #cached segments to 10

Previous default was 5.
erts: Fix memory leak in efile_drv.c

Seems to happen with async threads and when user closes
the file explicitly before the port is closed.
erts: Segment allocator CircleQ API
erts: Fix documentation about 10 default async threads.
erts: Prefer sbc segment caching over mbc segments
c: Remove handling of binaries in return from file:list_dir/1

file:list_dir/1 will no longer return binaries.
ssl: Generalize cb_info option
edoc: Fix building of documentation in sub directories

8115c0840527 broke building for projects that used sub directories
(but not packages).
Make the file:filename() type more restrictive

The recommended type for filenames is a list of characters (which
may be Unicode characters greater than 255). Change the
file:filename() to reflect that.

For the filename module we still need a type that can be either
a string or a binary, so we need to introduce the type
file:filename_all().