Is there a way to define the forward vector for an arbitrary mesh?
A mesh has local space, and therefore three local axes. Your vertices exist in the local space, and can be transformed therein, however you like. Use Mesh.vertices and alter them as you see fit. The term "forward" is associated with positive Z, in Unity, but it's only a guide; nothing is required to "point" at the blue arrow in the editor.
Mesh does not have a `.forward` property, so I guess you want to edit the transform's forward Vector3.
In that case then there would be 2 ways depending on what you want to do:
transform.forward = someVector;
//This will point the objects z-axis in that direction.
The other way would be to do the old trick where you create an empty GameObject and parent your mesh to it. That would let you redefine the local z-axis to the empty GameObject.