Given a string of parenthesis (ex. "{[()]}", write an algorithm to determine whether or not they are balanced.
Implement is_balanced(s) using a stack. The input contains only (, ), [, ], {, and } characters, and an empty string is balanced. Return True when every opening bracket has the correct closing bracket in the correct order; otherwise, return `False.
def is_balanced(s):