How to remove the size attributes of all fields? Size attributes just get in the way of responsive forms, and I realize most form fields can be overridden by CSS, but field types like input[type="file"] still do not behave well if a size attribute is set. 

See this JSFiddle example.

Since field elements are classed out well, I'd much rather purely rely on CSS for field sizes. So, how can size attributes be removed from all fields?
For text fields the size attribute is forcibly added in theme_textfield(), so the only way would be to override that function in your theme and remove that bit of code:

function mytheme_textfield($variables) {
  $element = $variables['element'];
  $element['#attributes']['type'] = 'text';

  // 'size' removed from this call
  element_set_attributes($element, array('id', 'name', 'value', 'maxlength'));

  // add the rest of the function...


Exactly the same thing goes for the file element (see theme_file()), and most likely for any other element type you need to do do this for.