I. Ability: 會;能/可以
(A safer way to negate 能/可以 is to use沒辦法/沒法, because 能/可以 can also mean permission. 不能 is possible when the hearer/reader won't think of “not permitted”; however, 不可以 can only mean “not permitted”.)
I think 會 deals with abilities/skills just acquired, while 能 deals with those already acquainted or innate. Or rather, you use 會 when there's a barrier for you to break; otherwise, use 能. With the lifeless, go for 能. When you see 會 used with the lifeless, that means “will”. (“Will” can also be translated to 會.) 可以 mostly means permission; therefore, sometimes you want to avoid using 可以 when it might get confusing.
Ex1: You could not (不會) speak Mandarin before you came to China but you can (會) now. But you now can (會; 能 is OK depending on how you see the barrier-breaking, and 可以 is a bit confusing here) only speak a little and cannot (沒辦法) understand a lot. You hope you can (能/可以; 會 is also possible when you raise the bar) speak very well someday.
Ex2: A healthy baby can (能/可以; I don't think 會 is a good option here but some will still use it) hear if it is not deaf. And it definitely needs practice before it can (會) walk or talk. You're very sick so you can't (不能/沒辦法) walk now but you'll be able to (能/可以; You don't have to re-learn how to walk, i.e. you can't re-break a barrier that you've broken) walk again very soon.
Ex3: This car can (能/可以) go from 0 to 90 mph within 3 seconds, but it will (會) cost you.
很會 or 很能
It seems to me that 很會 is more about being highly skillful and 很能 is more about being on a high level or having high capacity. But being able to reach a high level often requires being skillful as well, or the two meanings overlap, so many people will think they're the same.
To me, 你真的很會說話 means you really are a smooth talker, or persuasive, and 你真的很能說話 means you really can talk on and on, but I think many people will think they're interchangeable.