Boolean Networks: A Primer