radeon_hd: Convert encoders to pointers

* Preparation for multiple encoders per connector
bzip2: switched to optional package and drop in-tree sources.
* Fix a bug where a string longer than INT_MAX can cause IsValid() to falsely
  report a valid mimetype because strlen() returns a result than when stored
  in an int is treated as a negative number.

* Style fixes in the same method
Fix another overflow bug in BMimeType

* The static toLower() method had the same overflow bug that isValid()
  had. However, since it is a private static method, rather than fix the
  method I replaced with a call to strcasecmp() in the operator== overload.
  When this method was written strcasecmp() must not have been available.

* Declare ch outside of the the loop in IsValid() so that it only gets
  initialized once.
Revert "radeon_hd: Convert encoders to pointers"

This reverts commit 5a1f9f0f16b2a4bef89b61b4e3e24bf0b53917da.

* Thinking on this a bit more, this is really a silly change as
  I know the upper limit for number of valid encoders.
* Resolves a app_server crash introduced as well due to not
  allocating encoder pointer.
Update the behavior of uninitialized and NULL BMimeType objects.

* Two uninitialized BMimeType objects are considered to be equal,
  this is a purposeful break from BeOS R5.

* An uninitialized BMimeType object is considered to be equal to a
  BMimeType object initialized to NULL. This is a purposeful break from
  BeOS R5.

* Update the doxygen documentation comments to reflect this change which
  will hopefully make there way into the Haiku Book at some point.

* In BMimeType::SetTo() replace an instance of strcpy() with strlcpy()
  CID #something probably.

* Store the result of a few more strlen() function in size_t instead of
  int to prevent overflow bugs.

* Make sure BMimeType::GetSupertype() returns either B_OK or B_BAD_VALUE.

* Undo my previous "optimization" in IsValid() to declare ch outside the
  for loop.
radeon_hd: Remove isHDMI, isTV. Unused.
radeon_hd: Add support for external encoders

* Some encoders are bridges (DVO) and some encoders
  can act like bridges (UNIPHY). Probe for encoders
  further out in the display path and set them up
  properly.
* Debug output support for external encoders
* Fix cases where we should use external encoder
  information vs main encoder info.
radeon_hd: Fix bugs in external DP bridge code

* non-external encoder will never be a DP bridge.
* use external encoder in places where needed.
* ensure we look at proper encoder for isDPBridge.
matroska mime: detect with four first bytes.
listusb: also display vendor and device strings in non verbose mode.
Make private helper function static in fs_darwin.cpp in order to not pollute
the public namespace.
radeon_hd: Sanitize connector_is_dp function

* there is no guarentee the data in encoderExternal
  is valid if we don't check valid == true
radeon_hd: Repair external encoder dpms call

* I was right that this didn't look right.
* Now we set up the internal encoder, then
  the external one if valid.
* Make sure we optionally set up external
  encoder if desired on UNIPHY
3dmov: Add GL header dependency
3dmov: Convert to current DirectConnected api

* Not sure when this older method went away,
  but nothing uses it anymore.
* You now see a book when you launch 3dmov
* Still crashy
gl: Unify DirectConnected functions

* Partial undo of hrev43864 - 3dmov
  I was using an old GL renderer. After my indirect
  GL fix, this started working well without direct
  rendering. (sorry for the spam)
* Clean up the other GL DirectConnected functions
  Make it easy for know what to disable to toggle
  Direct Rendering.
networkstatus: Scale icon to large and small sizes

* This gives us a nice status icon to use for
  notification messages.
Merge branch 'master' of ssh://git.haiku-os.org/haiku
radeon_hd: DisplayPort encoder fixes.

* Handle external encoder case properly when
  pulling encoder mode.
* Return DisplayPort encoder if DisplayPort
  connector.
* Handle DVO properly when pulling encoder mode