Some basic refactoring and renaming to match coding guidelines.
Merge changes for mantis 3780 - these are needed to get TBS decryption working.
Add the TBS CI DLL which is used for supporting TBS products with a CI slot.
First commit of the Turbosight code that I've been working on. New features:
- USB product (QBox) support (DiSEqC, custom tuning)
- DiSEqC for new PCI/PCIe models (TBS6984, TBS6922 etc.)
- tone burst
- 22k
- LNB power on/off support
- decryption support
- CAM menu support

Still TODO:
- change the parameters on the 22k and tone burst functions to use generic enums so that the function signatures can be moved into an interface and implemented by other hardware classes
- find a way to keep generic Conexant support since the base Turbosight class uses the same property set GUID

Known issues (TBS):
- sometimes the CI API does not return all CAM menu entries (raised with TBS)

Note: the Turbosight class replaces the ProfRed class - Prof rebadge and sell only some TBS models so it is more accurate to call the interface a Turbosight interface.
A few DiSEqC logic optimisations added to the interim code. We would possibly be able to optimise more aggressively once refactoring is done on all the other classes and we are ready to do high level refactoring.
Bug fixes:
- CAM menu text answers not handled correctly (GetMmmi not triggered)
- response buffer overflow check

Changes:
- request CA information when entering the CAM menu; might be useful for debugging
- be more careful with CAM menu responses; check lengths etc.
- clarify the enter menu procedure with better comments
First commit of the work I've been doing on the Twinhan class. This is basically a complete rewrite.

Improvements:
- fix/add CAM menu support for devices using version 2 of the Twinhan CI API
- experimental support for PID filtering (not enabled)
- experimental support for custom tuning interface (not enabled)
- logging of tuner hardware, driver and CAM information

Changes:
- refactor SendPmt() to support multi-channel decryption easily in the future
- fix conditional access AllowStopGraph() logic for paalkr's TerraTec H7

Still TODO:
- find a solution for paalkr's H7 problems. I don't like the AllowStopGraph() hack at all even if it does work.
- move the Twinhan tuning parameter translations into the Twinhan class
- improve CAM state change detection when the MMI handler loop is not running
- attempt to fix TerraTec Cinergy C/S2 CAM menu support - unfortunately TerraTec seems to have customised their drivers to use a different interface for GetMmi(). This breaks CAM menu handling completely. I've emailed and requested an updated SDK (again).
Fix two minor compiling issues resulting from code copy-paste from my SVN working copy.
Minor fix/tweak: clear the MMI message buffer when starting the MMI handler thread. We don't want to send random messages!
Add generic enums for tone burst and 22 kHz states. I intend to use these as interface parameters and in places where generic references to these states are required. Many hardware providers will have their own slightly different versions of these enums so values may need to be translated.

Note: I'm not sure if I've put these in the right place, however they can easily be moved later if necessary.
First implementation of support for DiSEqC and DVB-S2 tuning for the Omicom DVB-S2 tuner.

TODO: test! None of the functions except the function that sends DiSEqC commands have been tested. The DiSEqC function was tested with a KNC tuner which uses the same ODSoft developed driver.
Merge remote-tracking branch 'remotes/origin/EXP-Tuner_hardware_support_cleanup_and_extension' into Twinhan
Implement SetTuningParameters() in the Twinhan class and update SetToneState() to use the new generic tone state enums merged from my main branch.
Add a comment to align the code with other classes.
Merge new generic enums for tone burst and 22 kHz state from my main working branch.
Implement use of the generic tone state enums as parameters for SetToneState() and fix a bug with CAM menus caused by clearing the MMI message buffer in the wrong place.
Update KNCBDACTRL.dll. This new version requires the VC++ 2010 redistributable. It is not compatible with the current code.
Minor: re-order/update usings.
Minor comment clarifications.
Minor tweak.