Implement expense filtering on dashboard

This commit adds realtime client-side filtering of expenses based on arbitrary input strings. Currently, tags, titles, and person (creditor or debtor) are searched. The search performs substring matching (i.e., "fo" matches "food"), and is case-insensitive. For an expense to match a query, all words in the query much match, i.e. "jeff food" only matches expenses with "jeff" AND "food" contained in their searchable text.