FFMPEG Plugin: Extract video aspect ratio calculation code.

- Also make use of the extracted code in the AVCodecDecoder class.
- Enhance some documentation and fix some coding style violations.
- No functional change intended.
FFMPEG Plugin: Implement and use calculation of bytes per row.
FFMPEG Plugin: Implement video frame rate calculation for decoder.

- The frame rate calculation is purely based on AVCodecContext fields. This way
  the frame rate can be calculated by the FFMPEG decoder based on the actual
  video data. This is useful for automatically detection of the correct
  decoding parameters (not implemented yet but scheduled for a later commit).
- Not used anywhere yet (scheduled for a later commit).
- Also some minor documentation updates.
FFMPEG Plugin: Automatic detection of video decoding parameters.

- Kudos to Marcus Overhagen for laying out the general idea of automatic
  detection by sharing some of his dvb code examples with me.
- Simplify pixel format search code by removing the loop and let FFMPEG
  decide what pixel format to use based on the actual video data.
- Automatically detect the video frame rate based on the actual video data.
- Remove fOutputVideoFormat to avoid synchronizing values in two distinct
  places. The member variable fHeader is the main place for important decoder
  parameters now.
- Introduce fOutputColorSpace containing the color space that was previously
  tracked in the fOutputVideoFormat member variable.
- Update the documentation accordingly.
MediaKit: Remove superflous code in mpeg2_decoder_test.

- Thanks to automatic video decoding parameter detection, we no longer need to
  manually hack the correct parameters for this test to succeed, jiha!
Don't advertise deflate compression support.

There is some misunderstanding on what the "deflate" is, and we can't
reliably decode it in all cases. So, don't advertise support for it and
let servers use gzip (or no compression) instead.

Fixes #11093
Bookmark bar uses "Bookmark bar" subfolder

* Allows having a lot of bookmarks in the menu, and only the most often
used ones in the bar.
* If the "Bookmark bar" folder doesn't exist, the old behavior (using
the main Bookmarks folder for the bar as well as the menu) is used.
* If none of these exists, the bookmark bar will not be available (just
like the bookmark menu)

Fixes #11092.

We may want to update the default set of bookmark to include some links
in the bar.
Factor out a BNetworkRequest

* Shares common behavior between the Gopher and HTTP request handlers.
* Most of this can be used when implemeting other protocols.
Move signal hack to BNetworkRequest

* This is used to unlock sockets when a read is pending after a close
* It is not needed on requests that don't use a socket.
Data URIs: don't decodewith invalid length..
Make URL decoding even more solid.

* Thanks to korli for pointing remaining issues.
UrlRequest: fix race condition

* The thread could set fRunning to false before the caller had set it to
true, leading to a stalled request.
* Happened easily when testing "data" requests, which are fast since no
I/O is involved.
* Possibly also helps with stalled redirects on Google search I've been
seeing for some time.
HttpTest: use BReferenceable APIs for the BUrlContext.
Add tests for data URIs.
smpeg: update to a version with a working libstdc++ dependency.

Stop-gap solution to make smpeg installable until the separate libstdc++
package is available. Then it will hopefully have a reliable "compat"
version we can depend on.
FFMPEG Plugin: Implement flushing of video frames from decoder.

- Video frames still contained in the video decoder are now flushed when there
  are no encoded data chunks left (signaled by B_LAST_BUFFER_ERROR).
- New code was successfully tested with mpeg2_decoder_test. The last test image
  is now decoded, too, resulting in a bump of the expected number of decoded
  images.
- Refactor code to support flushing -and- keep the readability at a sane level.
- Remove some uncommented code for the sake of readability.
- Documentation updated accordingly.
mknod[at](): moves from unistd.h to sys/stat.h

* this solves #10883.