How can you add a multiple value field to an entity?
How to attach a field to an entity programically solved this problem for me.  It's not an exact duplicate, but the answer and the comments pointed me to the right direction.

So this code creates the field and the instance and it attaches it to the entity very nicely:

function contacts_enable()
{
  if (!field_info_field('related_topics'))
  {
    $field = array(
      'field_name' =&gt; 'related_topics',
      'type' =&gt; 'list_text',
      'cardinality' =&gt; -1,
      'settings' =&gt; array(
        'allowed_values_function' =&gt; '_contacts_get_related_topics',
      ),
    );

    field_create_field($field);

    $instance = array(
      'field_name' =&gt; 'related_topics',
      'entity_type' =&gt; 'contacts',
      'label' =&gt; 'Related Topics',
      'bundle' =&gt; 'contacts',
      'default_value' =&gt; NULL,
      'settings' =&gt; array(
        'user_register_form' =&gt; FALSE,
      ),
      'widget' =&gt; array(
        'active' =&gt; 1,
        'module' =&gt; 'options',
        'settings' =&gt; array(),
        'type' =&gt; 'options_buttons',
        'weight' =&gt; -1,
      ),
    );

    field_create_instance($instance);
  }
}