Abstract types in Julia with fields