Pokerstars performance improvements

General performance improvements:
The SeatType class is now a struct and uses an enum instead of a string
+ int.
SeatType have a new property: isEmpty, it is true if SeatType was
initialized using the default constructor.
TableTypeDescription is now a struct instead of a class and uses flags instead of a list of enums.
There is a custom coded integer parser "FastInt" for parsing seat
numbers and button indexes.
Player.HoldeCards is initialized to null to avoid allocation for players
with no hole cards.
Player also have a new property hasHoldCards that checks if the player
have any hole cards.
PlayerList.Add() uses a binary search to insert players in the right
position directly.
Removed duplicate SplitHandLines()
Improved parsing of cards.

PokerStars Optimizations:
Using FastInt.Parse() for ButtonIndex, SeatIndex and maxPlayers.
GameType parsing uses a calculated gameTypeLength instead of the
length of the substring.
Faster Showdown scan.
Improved Pokerstars.ParseLine() performance for chat lines.