Merge pull request #1273 from iGemini/master

Now also ignores lobby messages from users on your ignore list.
askCard accepts property values in List form

this allows for greater customization of the cards that show up in the
askCard window, by being able to list multiple possible property values
instead of just one.  All options within a list use OR searching.
updated 3.1.0.0 API with improved askCard from .1
askCard now accepts the card model (GUID)

added an if statement to query card GUIDs if "model" is used as a
property key
Merge pull request #1285 from brine/test

askCard accepts property values in List form
Auto generated commit for version 3.1.138.320-Test
new viewCards() API

viewCards() takes a list of card objects, and tosses them into a
modified version of the askCard window.  Selecting a card will return
the list index of that card, which the python API converts back into a
card object.
Merge pull request #1288 from brine/test

new viewCards() API (rough first draft)
selectCard() won't crash with unidentified cards
Merge pull request #1289 from brine/test

selectCard() won't crash with unidentified cards
merged selectCard into askCard() (overloaded)

askCard() will now accept the property argument as either a dictionary
for askCard, or a list for selectCard
Merge pull request #1290 from brine/test

merged selectCard into askCard() (overloaded)
Auto generated commit for version 3.1.138.321-Test
fixed a kellyism
Got sleeve page and download sleeves.
Finished Sleeves tab.
Add sleeve tab in the deck editor.
Created SleeveManager
Created converter to convert sleeve id into an image
Added stuff for saving loading a deck with a sleeve id.
Made UserMessageException have a mode so if you choose background it will display as a toast instead of a blocking message box.
Getting, setting, saving and everything is done with sleeves except telling other users, verifying in SAS, and displaying the sleeve back instead of the card back.
Sleeves should be working now.