Thanks very much for sending all the info especially the sketch.ino which shows the issue.
This is not something you have configured incorrectly, arduino libraries have a few abnormalities which have changed throughout their various application versions, especially between arduino 1.5>1.5.3 and again within 1.5.4+. These issues are normally related to libraries that don't contain a .h of the same name. Notice that paths are not specified int he code for arduino libraries so conflicting names within different libraries are more difficult to resolve in the case of libraries without [libraryname.h] files. It can be difficult to know which library users are hoping to use.
In this case this is not the issue. The issue is that Visual Micro believes that the LiquidCrystal_I2C needs to be used. In your sketch code the LCD.h and LiquidCrystal_I2C.h libraries are included but within conditional #if statements like this ...
#elif (LCD_CONFIG == LCD_GENERIC_I2C)
// Using DFRobot or other cheap Chinese generic backpack
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
Historically Arduino has attempted to compile the libraries regardless of their "condition" in the code. This is because of the way Arduino finds #included libraries from within the code, it uses regex (string splitting) expressions before the compile.
From your report, it sounds like the Arduino Ide team have managed to workout which libs are actually included ignoring ones within invalid #if statements. We can also see in the verbose build from the arduino ide that it has not attempted to compile the lcd or i2 libraries.
I guess they are now looking at compiler defines within the regex lib filtering but without more exploration I can not be sure.
It certainly explains a few things and I will look, at the weekend, how the arduino ide can be ignoring these includes. I must have missed this change on the arduino dev forum.
Thanks very much for such complete answers, it's a real time saver for me. I'll post with a new release over the next week or so.