[#2065] Fix getSegmentsFromRealPath to raise error for path ouside of root.

Problem
------------

When a path is outside of root, getSegmentsFromRealPath just returns the [] root path and ignores the fact that path is not valid

This is why we get errors like this https://trac.chevah.com:10443/ticket/2058 .... as fs.exists() will return True since the broken link is resovled as root.


Why we got here
-----------------------

Most of the time the behavior is harmless... but with the new symlink support a broken link (or link outside of root) will point to root and we don't want that


Changes
-----------

Update the code to raise  CompatError

getSegmentsFromRealPath is an ugly method (by desing) but I have no idea how to replace it. 

exists was also fixed to return False for links outside of home folder.


How to test
----------------

reviewers: @alibotean 
Check that changes make sense.

I am trying the code on chevah.server and see if it works to fix https://trac.chevah.com:10443/ticket/2058

Thanks!