This feature may be present in other manufacturer's devices, but I know that Ubiquiti's UniFi APs let you set a minimum client signal strength [0], below which the AP will disassociate the client. [1] Folks in the support forums report that this works really well, but that you
do have to play around to find the right setting.
The three downsides to UniFi APs are:
* There is controller software which is required to configure (but not run) the APs.
* The price of the UAP-AC v1 and v2 models.
* Every AP setting change requires that the controller reboot the affected AP. The APs take ~60 seconds to reboot.
The controller software is reasonably well done [2], easy enough to use, and makes managing a swarm of APs pretty easy. I fire it up when I need to change channel settings or add an SSID or whatever and shut it down afterwards.
I hear that Ubiquiti is going to be releasing some new, lower-priced 802.11ac units soon-ish-ly that aren't much slower than (and are much less power hungry than) their existing 802.11ac units. So, if you want to give their hardware a try, you might want to wait until the new units are released. (Edit: Unless -of course- you don't care about 802.11ac, in which case I hear good things about the UAP-Pro, which does 2.4 and 5Ghz 802.11n.)
If you have questions about the APs or controller software, feel free to ask.
[0] AKA RSSI.
[1] The idea is that the newly-disassociated client will search for a new AP to attach to, find that the one it was ignoring has better signal strength after all, and attach to it, rather than the previous one it was attached to.
[2] It's some Java software that presents a web page on localhost that you log in to to manage your existing APs and adopt new ones that you've attached to your network.