Cannot parent my mesh to armature with automatic weights I have tried every solution I can find on here and youtube to fix this, mine appears to be a one off problem that I don't know how to solve. 

I have a finished armature and mesh, whenever I select parent with automatic weights - 'bone heat weighting failed to find solution for one or more bones'comes up 
I have separated loose parts, added the subsurf modifier and removed vertex and recalculated normals. Help me pls, its been 3 hours of hell. 
Yours faithfully, a complete noob. x
The problem is mostly due to the fact that both the rig and the mesh aren't perfectly symmetrical, you have to make sure both your mesh and your rig are properly lined up.

I recommend makign sure the central row of vertices of your model are straight, by scaling along X to 0, then line up the bones in the central column of your armature, delete the limbs of either side, and make sure you can properly skin one half.

Then follow this answer on how to properly mirror a rig

as a side note, your thumb bones aren't attached to your hand bones, and you have some aberrant geometry on the hat and on the neck watch out.