utils::url::open shouldn't be allowed to crash the whole app
remove dangerous code in GameCenter clearAllScores

it's not safe to simply submit 0 as new score. just think of scores sorted from
low to high. the user would jump straight to the top - no good!
cache gamecenter scores/achievements if not authenticated
cache the highest AND lowest scores; for achievements only the highest
return bool from the obj-c backend to c++
check delegate pointers in iOS backend before using them
Merge pull request #16 from michaelcontento/catch-url-open-exceptions

utils::url::open shouldn't be allowed to crash the whole app [try-catch block added]
Merge pull request #21 from michaelcontento/check-ios-payment-delegate-pointer

Check payment::ManagerDelegate pointers in iOS backend before usage
add short (but informative *g*) log message
Merge pull request #18 from michaelcontento/fix-gamecenter-clear-scores

remove dangerous code in GameCenter clearAllScores
Merge branch 'fix-gamecenter-clear-scores' into ios-gamecenter-caching

* fix-gamecenter-clear-scores:
  add short (but informative *g*) log message

Conflicts:
	avalon/platform/ios/gamecenter/GameCenterIos.m
Merge pull request #19 from michaelcontento/ios-gamecenter-caching

iOS GameCenter caching
Merge pull request #20 from michaelcontento/gamecenter-return-bool-on-show-methods

GameCenter return bool on show methods
add some preprocessor defines to make checks easy
replace tabs with spaces in Android.mk
add android-amazon implementation of avalon::GameCenter
fix GameCenter stubs for android-google and -samsung
ensure manager and manager->delegate are not NULL in ios payment backend

also it's important to NOT call finishTransaction if we're unable to
call onHasBeenPurchased() for the given product! it's okay if the delegate
it not set -- that's the will of the developer -- but in all other cases
something is wrong and we must ignore this transaction. it's the best behaviour
for the customer as apple will resend the transaction eventually.
globalManager pointer must be checked as it could be NULL
showAchievements and showScores now returns a boolean