What's correct way to toggle a single bit and a whole register in microchip C programming?
I see many issues with your code that would likely cause you grief.

Firstly (I dont think this is your main issue), you enable interrupts but have no function to catch them. If an interrupt were to occur, your PIC would likely reset (undefined behavior).

Secondly, when you try to toggle your LATD, you are in fact togling just the lowest bit. When you enter the literal 1, the compiler interprets it as 0x01. If you want to toggle the whole byte, you should xor with 0xFF (255) instead.

Thirdly, you dont seem to set your configuration bits anywhere nor do you configure your oscillator. Without setting these values, you may have a chip running at a very low speed and your Delay might be longer than you expect (you have not provided their definition ether so I cant confirm or deny this hypothesis). 

EDIT: 
I looked into this more and i believe I have found your main issue. If you look at the pinout in the specification sheet for this PIC, you will find that pin RE0 shares a physical pin with an analog input. The default state in PIC micro-controllers is for the analog input to override the digital input. You have to disable the analog input through the ADCON1 register to be able to get digital input (see test code below).

As you seem to have determined that your oscillator is running, I suggest next testing if you can read the button correctly :

void main(){
    TRISD=0;
    ADCON1 = 0x0F;
    LATD =0;
    while(1) LATD = (PORTE &amp; 0x01) ? 0xff : 0x00;
}


You should see your LEDs follow the logic level of your switch.