title: Virtus: distinguish empty arrays from an unset attribute
body: <p>I have several forms that submit to a Virtus object (through a controller). Some forms contain an <code>extras</code> attribute, others don't.</p>
  
  <p>I currently can't distinguish whether <code>extras</code> has been set to an empty array (i.e. the user deselects all checkboxes on the form) or whether extras has never been submitted. In either case, <code>extras</code> will be an empty array.</p>
  
  <p>I need this distinction because if the user deselects all <code>extras</code> I need to update them. On the other hand, if extras were not part of the form (i.e. not in the params), I shouldn't update them.</p>
  
  <pre><code>class UpdateForm
    include Virtus.model(nullify_blank: true)
    include ActiveModel::Model
    attribute :extras, Array
    attribute :booking_time, Time
  
    def save
      updatable_attributes = self.attributes.delete_if { |key, value| value.blank? }
      some_object.update(updatable_attributes)
    end
  end
  </code></pre>
  
  <p>How can I make Virtus to give me a nil on <code>extras</code> if I call it like this:</p>
  
  <pre><code>UpdateForm.new(booking_time: Time.current)
  </code></pre>
  
  <p>Or is there a better pattern to do this?</p>