Another attempt to get BaseField.getFieldValue right for all cases

@ebrehault I've been floundering trying to get this right, I'll submit the pull request for review but I think we need more tests before merge. 
I'll try to get that done today ..