Add test for watching a variable multiple times
Match client_data as well for finding duplicates

If a callback has the same data as another call, we don't want to delete
the old callback. This is because if the client_data is the same, it
might get deleted causing the new client_data to be bogus. Now, AddWatch
will return true if it will use the watch, false otherwise.
Allow specifying the data to match in RemoveWatch

Now that watches are dependent on their client_data when adding, it also
makes sense to allow matching the data for removal.
Don't share memory for variable_watch callbacks

Each callback is now a separate entity completely and doesn't rely on
the command which spawned it at all.
Check newValue for NULL

On read access, newValue can be NULL since there is no new value, so use
the empty string instead.
Remove variable_watch watches on destruction

This cleans out old watches. Now that watches are completely separate,
if we don't remove all of the old watches, the following happens:

    variable_watch(watched call1)
    variable_watch(watched call2)
    set(bar "${watched}")

(in ccmake):

    configure
    configure

makes the output:

    <configure>
    call1
    call2
    <configure>
    call1
    call2
    call1
    call2

since the old watches are still valid.
Merge topic 'dev/fix-variable-watch-crash' into next

e59d61d Remove variable_watch watches on destruction
8e93fee Check newValue for NULL
854e9ba Don't share memory for variable_watch callbacks
15da32a Allow specifying the data to match in RemoveWatch
8d3a6c0 Match client_data as well for finding duplicates
06d6fc4 Add test for watching a variable multiple times