message: qt: Make transaction notification queue wallet specific
  Drop global vQueueNotifications and make one for each wallet.
diff: @@ -78,9 +78,6 @@ private:
  bool showTransaction;
  };
  -static bool fQueueNotifications = false;
  -static std::vector< TransactionNotification > vQueueNotifications;
  -
  // Private implementation
  class TransactionTablePriv
  {
  @@ -98,6 +95,12 @@ public:
  */
  QList<TransactionRecord> cachedWallet;
  + bool fQueueNotifications = false;
  + std::vector< TransactionNotification > vQueueNotifications;
  +
  + void NotifyTransactionChanged(const uint256 &hash, ChangeType status);
  + void ShowProgress(const std::string &title, int nProgress);
  +
  /* Query entire wallet anew from core.
  */
  void refreshWallet(interfaces::Wallet& wallet)
  @@ -707,7 +710,7 @@ void TransactionTableModel::updateDisplayUnit()
  Q_EMIT dataChanged(index(0, Amount), index(priv->size()-1, Amount));
  }
  -static void NotifyTransactionChanged(TransactionTableModel *ttm, const uint256 &hash, ChangeType status)
  +void TransactionTablePriv::NotifyTransactionChanged(const uint256 &hash, ChangeType status)
  {
  // Find transaction in wallet
  // Determine whether to show transaction or not (determine this here so that no relocking is needed in GUI thread)
  @@ -720,10 +723,10 @@ static void NotifyTransactionChanged(TransactionTableModel *ttm, const uint256 &
  vQueueNotifications.push_back(notification);
  return;
  }
  - notification.invoke(ttm);
  + notification.invoke(parent);
  }
  -static void ShowProgress(TransactionTableModel *ttm, const std::string &title, int nProgress)
  +void TransactionTablePriv::ShowProgress(const std::string &title, int nProgress)
  {
  if (nProgress == 0)
  fQueueNotifications = true;
  @@ -732,17 +735,17 @@ static void ShowProgress(TransactionTableModel *ttm, const std::string &title, i
  {
  fQueueNotifications = false;
  if (vQueueNotifications.size() > 10) { // prevent balloon spam, show maximum 10 balloons
  - bool invoked = QMetaObject::invokeMethod(ttm, "setProcessingQueuedTransactions", Qt::QueuedConnection, Q_ARG(bool, true));
  + bool invoked = QMetaObject::invokeMethod(parent, "setProcessingQueuedTransactions", Qt::QueuedConnection, Q_ARG(bool, true));
  assert(invoked);
  }
  for (unsigned int i = 0; i < vQueueNotifications.size(); ++i)
  {
  if (vQueueNotifications.size() - i <= 10) {
  - bool invoked = QMetaObject::invokeMethod(ttm, "setProcessingQueuedTransactions", Qt::QueuedConnection, Q_ARG(bool, false));
  + bool invoked = QMetaObject::invokeMethod(parent, "setProcessingQueuedTransactions", Qt::QueuedConnection, Q_ARG(bool, false));
  assert(invoked);
  }
  - vQueueNotifications[i].invoke(ttm);
  + vQueueNotifications[i].invoke(parent);
  }
  std::vector<TransactionNotification >().swap(vQueueNotifications); // clear
  }
  @@ -751,8 +754,8 @@ static void ShowProgress(TransactionTableModel *ttm, const std::string &title, i
  void TransactionTableModel::subscribeToCoreSignals()
  {
  // Connect signals to wallet
  - m_handler_transaction_changed = walletModel->wallet().handleTransactionChanged(std::bind(NotifyTransactionChanged, this, std::placeholders::_1, std::placeholders::_2));
  - m_handler_show_progress = walletModel->wallet().handleShowProgress(std::bind(ShowProgress, this, std::placeholders::_1, std::placeholders::_2));
  + m_handler_transaction_changed = walletModel->wallet().handleTransactionChanged(std::bind(&TransactionTablePriv::NotifyTransactionChanged, priv, std::placeholders::_1, std::placeholders::_2));
  + m_handler_show_progress = walletModel->wallet().handleShowProgress(std::bind(&TransactionTablePriv::ShowProgress, priv, std::placeholders::_1, std::placeholders::_2));
  }
  void TransactionTableModel::unsubscribeFromCoreSignals()
  